LIKE operaator
LIKE
operaator on ka üks võimalikest operaatoritest, mida saab kasutada koos WHERE
märksõnaga. LIKE
operaator pakub võimalust täpsustada enda järel mingit mustrit, mille põhjal saab veergude väärtuseid piirata. Tihtipeale kasutatakse seda sõnede juures, kus otsitakse tabelist kirjeid, kus veeru väärtus sisaldab mingit kindlat sümbolite kombinatsiooni. LIKE
operaatorit kasutatakse tekstiliste andmetüüpidega (varchar
, text
, char
) defineeritud väljadel. LIKE
operaatori puhul võrreldakse teksti teatud mustriga. Mustri koostamiseks on kasutada kaks põhilist sümbolit: '_'
ja '%'
. Alakriips '_'
sobib suvalise ühe sümboli asemele ning protsendimärk '%'
sobib sümbolite jada asemele. Näiteks kirjutades päringu
SELECT eesnimi FROM isikud WHERE eesnimi LIKE 'Mari%',
saame tulemuseks nii nime Mari
kui ka nimed Maris
, Mariann
, Marit
, Mari-Liis
jne. Kirjutades aga päringulause
SELECT eesnimi FROM isikud WHERE eesnimi LIKE 'Mari_'
saame tulemuseks küll Maris
, Marit
, Marin
, Maria
jne, kuid teisi nimesid ei saaks, sest siin nõutakse, et oleks lisaks algusele Mari
veel üks suvaline täht. Samas teades, et tabelis on keegi eesnimega Peeter, aga me ei ole kindlad, kas perekonnanimi on Peet või Leet. Ehk siis ühe sümboli
vahe, siis sellisel juhul on _
kasutamine omal kohal.
Sooritame päringu:
SELECT * FROM isikud WHERE eesnimi='Peeter' AND perenimi LIKE '_eet';
%
saab kasutada mustris ees ja taga. Päringulause
SELECT eesnimi FROM isikud WHERE lower(eesnimi) LIKE '%mari%'
annab lisaks meile tulemustabelisse ka sellised nimed nagu Annemari
jms. %
märk võib esineda suvalises kohas, ka sõna keskel ja mitu korda. Kuna PostgreSQL eristab suur- ja väiketähti on hea muuta eelnevalt kogu nimi kas suurtähtedest või väiketähtedest koosnevaks. Analoogselt LIKE operaatorile saab ka kasutada operaatorit NOT LIKE
. Oluline on aga märkida LIKE
operaatori oht - kui kasutatakse %
esimesel kohal, siis on päring aeglasem.
Mustri elemente %
ka _
saab kasutada ka kombineeritult.
Pärime kõik kirjed, kus perenimes enne n
sümbolit võib olla üks või mitu sümbolit ja peale n tähte võib olla üks suvaline sümbol.
SELECT perenimi FROM isikud WHERE perenimi LIKE '%n_';
Mõtiskle, millised perenimed vastaksid sellisele tingimusele. Kui soovid oma teadmisi kontrollida, ava test.
AVA TEST
Mustri elemente %
ka _
saab kasutada ka sõne keskosa maskeerimisel.
Mõtiskle, millised perenimed vastaksid sellisele tingimusele:
SELECT perenimi FROM isikud WHERE perenimi LIKE 'K%s';
Kui soovid oma teadmisi kontrollida, ava test.
AVA TEST
NOT LIKE
toimib LIKE suhtes vastupidi
.
NOT LIKE puhul on mustri loomise elemendid _
ja %
ja nende kombinatsioonid samuti nagu LIKE puhul kasutatavad.
Kui soovime otsida isikuid, kelle perenimed ei alga K-tähega, saame kirjutada päringu
SELECT * FROM isikud WHERE perenimi NOT LIKE 'K%';
Päringulause (algus) | Päringud funktsioonidega |