Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam! Mam taki problem odnośnie usuwania spacji:
Mam dane w bazie Mysql'a a dokładnie chodzi mi o kolumnę typu varchar w której mam wczytane kwoty:
np: 1 788.99
chciałbym usunąć tą spację pomiędzy 1 i 7 ( rekordów oczywiście jest bardzo dużo z różnymi kwotami ) ale kombinuje już pare godzin i niewiem co jest grane;
Najpierw próbowałem :
UPDATE tabelka SET kwota = replace(kwota, " ", "")
czy np UPDATE tabelka SET kwota = TRIM(kwota)
ale nic to nie daje. Oczywiście jeżeli inne kolumny próbuję tą metodą zamienić to jest OK!
Czyli wygląda na to że to nie jest spacja - tylko pytanie co??
Próbowałem także z poziomu php:
$zapytanie = "SELECT kwota FROM tabelka"; $wykonaj = mysql_query($zapytanie); while($wiersz=mysql_fetch_array ($wykonaj)) { echo $wiersz['kwota']."<br>"; $nowy = $wiersz['kwota']; $tescik = str_replace(" ", "", $nowy); // $tescik = trim($nowy); echo $tescik."<br>"; echo "TO jest test"; }
Ale wyświetla jedno pod drugim to samo - nie usuwa spacji.
Jedna rzecz jaką udało mi się zauważyć ( jak widać specjalnie dorzuciłem echo "TO jest test"; )
jak zmienię pod firefoxem kodowanie w widoku na UTF-8 to w tych kwotach w miejscach gdzie jest niby ta spacja
pojawia mi się znak - � czyli:
1�788.99
1�788.99
a pod spodem zwyczajne:
TO jest test
( bez żadnych dziwnych znaków tam gdzie spacje ) w związku z czym podejrzewam właśnie że to nie spacja jest w tych kwotach.
Spotkał się ktoś może z podobnym problemem??
Offline
może naookoło ale powinno zadziałać: rekord po rekordzie wczytujesz sobie kwotę, następnie konwersja to stringa, wycięcie spacji (nie pamiętam jak się funkcja nazywa bo php wieki nie używałem), wrzucenie nowej wartości do tabeli. Odpowiedni fragment kodu w bashu :))
echo "SELECT kwota FROM tabelka" |mysql -uUSER -pPASS |while read KWOTA do NOWA_KWOTA=$(echo "$KWOTA" |tr -d " ") echo "UPDATE tabelka SET kwota=\"$NOWA_KWOTA\" WHERE (tu musisz sobie warunek wymyślić :P)" |mysql -uUSER -pPASS done
Może nie jest to jakiś mega optymalny kod ale działający ;) przynajmniej u mnie działa podobny ;) Tak wiem chory jestem używać basha do obsługi mysqla ale tak mi było wygodnie i po drodze ;]
Offline
mysql> CREATE TABLE test(test varchar(10)); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO test VALUES('test test'); Query OK, 1 row affected (0.00 sec) mysql> SELECT test FROM test; +-----------+ | test | +-----------+ | test test | +-----------+ 1 row in set (0.00 sec) mysql> UPDATE test SET test=REPLACE(test, ' ',''); Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT test FROM test; +----------+ | test | +----------+ | testtest | +----------+ 1 row in set (0.00 sec)
A teraz pokaż jak Ty to robisz i co Ci nie działa ;)
Tak BTW, do trzymania wartości liczbowych to są jednak lepsze typy niż varchar ;)
Ostatnio edytowany przez lessmian (2010-10-18 20:16:17)
Offline
w Bashu po wyświetleniu w miejscu gdzie normalnie jest spacja pokazuje się znak -
Wie ktoś może co to za znak i jak go zamienić??
Czyli generalnie kwota wygląda tak: 1▒788.99
Offline
Unicode wyróżnia przynajmniej 16 różnych spacji. To pewnie któraś z nich.
Ja bym ją w terminalu zaznaczył i wkleił (shift+insert lub środkowy klawisz myszy) w odpowiednim miejscu w sedzie czy czymś.
Offline