Strona 1 z 1

SQL - użycie LIKE

: 08 gru 2014, 18:41
autor: Rublik
Niby drobiazg, a jednak :D
Przypuśćmy, że nazwisko ma ileś tam liter. W bazie znajduje się 20 nazwisk i mam wyświetlić te, które zawierają w sobie litery K i A w wymienionej kolejności, czyli na przykład nie Malinowska, bo już druga litera to A zamiast K, a np. pasuje Kowalski, bo kolejność K i A jest prawidłowa.
Na razie zatrzymałem się na następującej kwerendzie:
select * from klienci
where nazwisko like '%k%' or nazwisko like '%a%'
ale nadal wypisuje panią Malinowską. Jak ja mam to poprawić?

Re: SQL - użycie LIKE

: 08 gru 2014, 20:39
autor: SzymekRak
Rublik pisze:Niby drobiazg, a jednak :D
Przypuśćmy, że nazwisko ma ileś tam liter. W bazie znajduje się 20 nazwisk i mam wyświetlić te, które zawierają w sobie litery K i A w wymienionej kolejności, czyli na przykład nie Malinowska, bo już druga litera to A zamiast K, a np. pasuje Kowalski, bo kolejność K i A jest prawidłowa.
Na razie zatrzymałem się na następującej kwerendzie:
select * from klienci
where nazwisko like '%k%' or nazwisko like '%a%'
ale nadal wypisuje panią Malinowską. Jak ja mam to poprawić?
Moim zdaniem to zapytanie wypisuje wszystko, co spełnia taki warunek: "jest cokolwiek, potem k, potem znowu cokolwiek" lub "jest cokolwiek, potem a, potem znowu cokolwiek". Może coś takiego:

Kod: Zaznacz cały

select * from klienci
where nazwisko like '%k%a%' or nazwisko like 'K%a%'

Re: SQL - użycie LIKE

: 08 gru 2014, 23:25
autor: Rublik
Nadal wypisuje takie nazwiska jak Malinowska czy Paprocka...

Re: SQL - użycie LIKE

: 09 gru 2014, 6:55
autor: winuser
Tam się czasem znaku podłogi nie używało, żeby ustawić kolejność liter ? Coś mi świta, że tak.
Sprawdziłem i tak, musisz zastąpić znak % znakiem _ .

Kod: Zaznacz cały

select * from klienci
where nazwisko like '_k%a%' or nazwisko like 'K_a%'
Pokazuje nazwiska z drugą literą k mające w sobie literę a lub mające pierwszą literę K i trzecią a. Inne robisz analogicznie ;) (znak _ zastępuje dowolny znak)

Re: SQL - użycie LIKE

: 09 gru 2014, 11:44
autor: lolasher
To mam rozumieć, że trzeba ręcznie sprawdzać każdą literę w ciągu? A nie dałoby się w zamienić tej podłogi na gwiazdkę?

Re: SQL - użycie LIKE

: 09 gru 2014, 14:57
autor: Rublik
winuser, Twoja kwerenda zwraca 0 wyników :P
lolasher, chyba tak ma to działać, w przypadku napotkaniu jako pierwszej litery A ma tego nazwiska nie wypisywać, tak samo, jak znajdzie K, ale nie wyszuka A.