Sql zapytanie o kod pocztowy nie zwraca nic, mimo ze kod pocztowy istnieje.

0

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??

0

Taki efekt może powodować:

  • brak rekordu spełniającego warunek
  • zapytanie do złej tabeli/bazy itd.
  • warunek na niewłaściwym polu
  • kodowanie znaków
  • niewidoczne znaki
  • uszkodzona baza

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.

0

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?

0

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.

0

Skopiuj sobie jeszcze ten rekord do edytora wyświetlającego wszystkie znaki. Może tam siedzi jakiś niewidoczny znak.

0
  1. jeśli masz indeks na polu z kodem to go usun.
  2. załóż index na polu z kodem
1

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)

0

Cholera, wie co tam jest. Zostawiam jak jest. KOSZ prosze

0

@abrakadaber poprosił Cię o konkretne informacje.
Tak trudno je przekazać :)?

0

Spróbuj tak:

SELECT * 
FROM address 
WHERE postcode like '%KLMAR%'

Albo tak:

SELECT * 
FROM address 
WHERE trim(postcode) = 'KLMAR'

1 użytkowników online, w tym zalogowanych: 0, gości: 1