Wazniak96
4.07.2012, 16:37:36
Problem lezy w tym, ze jezeli w bazie mamy dodane rekord, np 'Pomidor', a zapytanie ulozymy WHERE warzywo='pomidor' to nie znajdziemy zadnego rekordu. Jest jakis sposob aby to ominąc .? Czy muszę dodac nowe pole, w ktorym bd konwersowal nazwe wazywa poprzez strlower do malych liter a pozniej rownierz $_POST['warzywo'] konwersowal do malych .?
Crozin
4.07.2012, 17:24:56
Musiałbyś ustalić odpowiedni tryb porównywania znaków (ang. collate). SQLite posiada trzy tryby: binary, nocase, rtrim. Nocase nie uwzględnia wielkości znaków, jednak działa wyłącznie ze znakami łacińskimi, innymi słowy A = a, ale Ą != ą. Tak więc jeżeli korzystasz z SQLite nie masz na dobrą sprawę innej możliwości jak utworzyć dodatkową kolumnę.
Wazniak96
4.07.2012, 17:50:40
Crozin a jak to porownywanie znakow przestawic .
Crozin
4.07.2012, 18:02:03
Możesz to albo ustawić deklarując strukturę tabeli:
CREATE TABLE tbl_name (
col_name COLLATE NOCASE,
...
);
Albo na poziomie zapytania SQL:
SELECT ... WHERE col_name_a = col_name_b COLLATE NOCASE ...