[SQLite] Polskie znaki w zapytaniach

0

Hey, hi, hello!

Przed chwilą napotkałem pewien dziwny problem. Mam aplikację napisaną w Delphi, która korzysta z tytułowego SQLite-a. Mam np. w tabeli pole "miasto" i w rekordach np. takie wartości: "Radom", "Kraków", "Poznań", "Warszawa". I mam takie zapytanie:

SELECT * FROM nazwa_tabeli WHERE miasto LIKE "%' + Edit.Text + '%";

Gdy wpiszę do Edita np. "radom" czy "m" to zwróci mi te rekordy w których pole "miasto" ma wartość "radom" (lub takie w których w nazwie wystąpiło "m"). Ale gdy wpiszę sam polski znak, np. "ń" to zwróci mi nie tylko "poznań" ale również "kraków". Gdy wpiszę np. "ów" to jest ok. Problem występuje przy pojedynczym, polskim znaku.

Pytanie I - dlaczego?
Pytanie II - jak temu zapobiec?

0

Ponawiam prośbę bo na pewno ktoś wie czemu tak jest i może przeoczył ten temat po prostu...

0

Hallo dkacperczyk!

Nie znam SQlite i nie jestem specjalista w dziedzine baz danych, ale podejrzewam, ze twoj problem tkwi w konfiguracji bazy danychh (SQLite). O ile sie orientuje, przy tworzeniu bazy danych, tabel i pol mozna zadeklarowac na jakich "code page" (czy "character set") bedzie oparta baza danach. Dodatkowo przy pomocy "collation" mozna ustalic w jaki sposob beda porownawane zawartosci pol alfanumerycznych (teksty).

Nie wiem na jakiej "code page" (czy "character set") bazuje teraz twoja baza. Prawdopodobnie jakis standard np. ASCII. I tutaj moze byc problem, bo polskie zanki (kreseczki, jezyczki itd. itp...) sa rozszezeniem i nie wystepuja w standardzie. Tak wiec musisz trochke poczytac i poszperac, na przyklad w Wikipedii:

http://en.wikipedia.org/wiki/Polish_code_pages

Dodatkowo szukaj rowniez na tym forum, na przyklad:

http://4programmers.net/Forum/viewtopic.php?id=154151

Pozdrawiam
Markus

0

Dzięki za odpowiedź, już zabieram się za lekturę:)

0

Hej! I jak? Udało się rozwiązać problem?
Ryję Net w poszukiwaniu rozwiązania z literą Ł/ł w zapytaniach FTS4 pod SQLite.
Tak, jak zeby = żeby i zęby i zeby, tak wlasnie != właśnie, lub lada != lada i łada.
Niestety, SQLite nie jest tak plastyczne w kodowaniu znaków jak inne silniki bazodanowe, stąd mój kłopot: jak sobie z Ł/ł poradzić?

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