Witam,
Mam takie sql zapytanie:
SELECT *
FROM address
WHERE postcode = 'KLMAR'
Zapytanie nie zwraca niczego, pomimo ze kod istnieje w db. Jakes rozne kodowanie stringa czy jaka cholera? Co moze cos takiego powodowac??
Witam,
Mam takie sql zapytanie:
SELECT *
FROM address
WHERE postcode = 'KLMAR'
Zapytanie nie zwraca niczego, pomimo ze kod istnieje w db. Jakes rozne kodowanie stringa czy jaka cholera? Co moze cos takiego powodowac??
Taki efekt może powodować:
Zacząłbym analizę od sprawdzenia czy na pewno istnieje taki rekord, sprawdzenia czy jestem połączony z właściwą bazą, a następnie pokobinowałbym z LIKE 'KL%' itp oraz skopiowałbym zawartość komórki z tym rekordem do jakiegoś edytora wyświetlającego wszystkie znaki np. Notepad++ czy coś podobnego.
Tabela adresow ma juz kilka set adresow. Generalnie, zapytanie jest do poprawnej tabeli oraz wykonane na odpowiedniej kolumnie. A kody pocztowe jakie poszukiwalem istnieja w tabeli. Wydaje mi sie, ze to musi byc cos z kodowaniem. Bo co innego?
Dodam, ze kodowanie na tabeli to utf8_generacl_ci. A sama kolumna jest typu text
, a nie varchar
. Nie spotkalem sie nigdy z czyms takim. Stawiam na kodowanie, albo jakos trzeba przefiltrowac tego stringa.
Skopiuj sobie jeszcze ten rekord do edytora wyświetlającego wszystkie znaki. Może tam siedzi jakiś niewidoczny znak.
pokaż zrzut ekranu z tym rekordem, który niby istnieje a się nie pojawia (zrób zapytanie bez where, przewiń do interesującego rekordu j zrób zrzut ekranu)
Cholera, wie co tam jest. Zostawiam jak jest. KOSZ prosze
@abrakadaber poprosił Cię o konkretne informacje.
Tak trudno je przekazać :)?
Spróbuj tak:
SELECT *
FROM address
WHERE postcode like '%KLMAR%'
Albo tak:
SELECT *
FROM address
WHERE trim(postcode) = 'KLMAR'