SQL - LIKE Operator


Do sada ste vidjeli uslove koji identifikuju tačan niz, npr. WHERE name = 'Lois Lane'. Ali u SQL-u možete izvršiti i djelomično podudaranje ili uzorak pomoću operatora LIKE. Operator LIKE pruža mjeru podudaranja uzorka omogućavajući vam da odredite zamjenske znakove za jedan ili više znakova. Možete koristiti sljedeća dva zamjenska znaka:

  • Znak postotka (%) - odgovara bilo kojem broju znakova, čak i nula znakova.
  • Podvlaka (_) - Podudara se s točno jednim znakom

Evo nekoliko primjera koji pokazuju kako koristiti LIKE operator sa zamjenskim znakovima.

Izjava Značenje Vrijednost vraćena
WHERE name LIKE 'Da%' Pronađite imena koja počinju sa Da David, Darko
WHERE name LIKE '%th' Pronađite imena koja se završavaju sa th Elizabeth, Smith
WHERE name LIKE '%on%' Pronađite imena koja sadrže on Davidson, Toni
WHERE name LIKE 'Sa_' Pronađite imena koja počinju sa Sa, a iza njih je najviše jedan znak Sanja
WHERE name LIKE '_oy' Pronađite imena koja se završavaju s oy i kojima prethodi najviše jedan znak Joy, Roy
WHERE name LIKE '_an_' Pronađite imena koja sadrže i počinju i završavaju s najviše jednim znakom Dana, Hans
WHERE name LIKE '%ar_' Pronađite imena koja sadrže ar, započinju s bilo kojim brojem znakova i završavaju s najviše jednim znakom Richard, Karl
WHERE name LIKE '_ar%' Pronađite imena koja sadrže ar, započinju s najviše jednim znakom i završavaju s bilo kojim brojem znakova Karl, Mariya

Stavimo gore navedene izjave u stvarnu upotrebu pretragom nekih zapisa. Uzmimo u obzir da u našoj bazi podataka imamo tabelu zaposlenih sa sljedećim zapisima:



Recimo sada da želite saznati sve zaposlene čije ime počinje slovom S.

SELECT * FROM employees 
WHERE emp_name LIKE 'S%';

Nakon izvršavanja upita, dobit ćete otprilike ovakav rezultat:



U MySQL nebinarnim nizovima (CHAR, VARCHAR, TEXT) poređenje prema zadanim postavkama ne razlikuju velika i mala slova, dok su poređenja binarnih nizova (BINARY, VARBINARY, BLOB) osjetljive na velika i mala slova.

To znači da ako pretražujete s WHERE imenom KAO 'S%', dobit ćete sve vrijednosti kolonaa koji počinju sa S ili s (kao što vidite imamo i "Sarah" i "simons"). Međutim, ako ovu pretragu želite učiniti osjetljivom na velika i mala slova, možete koristiti BINARY operator kako u sljedećem primjeru:

-- Sintaksa za MySQL Database 
SELECT * FROM employees 
WHERE BINARY emp_name LIKE 'S%';

Sada će ova izjava vratiti samo one zaposlene čija imena počinju velikim slovom S: