Kuinka käyttää LIKE-operaattoria ja jokerimerkkejä SQL-kyselyissä
SQL-lauseiden operaattorit mahdollistavat tietojen vertailun, yhdistämisen ja muokkaamisen osana kyselyä. Ne määrittävät, millä ehdoilla ja logiikalla tietoa käsitellään — tämän takia ne ovat olennainen SQL-kielen toimintaa. Operaattorit jaetaan perinteisesti kuuteen pääryhmään: aritmeettiset, vertailu-, merkki-, loogiset, joukko- ja muut operaattorit.
Merkkioperaattorit
Merkkioperaattoreita käytetään merkkijonojen vertailuun ja yhdistelyyn SQL-lauseissa. Niiden ensisijainen käyttökohde on etsiä tietoja, jotka vastaavat kokonaan tai osittain annettua merkkijonoa.
Merkkijonojen vertailu Like-operaattorilla
LIKE-operaattori etsii arvoja, jotka vastaavat osittain annettua merkkijonomallia.
Seuraavassa SQL-kyselyssä haetaan kaikki automallit, joiden nimessä esiintyy merkkijono "AD".
SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Malli LIKE '%AD%';
Prosenttimerkki (%) toimii jokerimerkkinä, joka vastaa mitä tahansa merkkejä — samaan tapaan kuin *-merkki monissa käyttöjärjestelmissä.
Pelkkä % ilman muuta sisältöä ehdossa hyväksyy kaikki merkkijonoarvot.
Tarvittaessa jokerimerkkejä voi sijoittaa useita haluttuihin kohtiin merkkijonossa.
LIKE-operaattoria käytettäessä kannattaa huomioida, että jokerimerkit voivat vaikuttaa suorituskykyyn, sillä ne estävät tietokantaa hyödyntämästä indeksoitua dataa. Huonosti määritellyt villikorttihaut voivat myös hidastaa tuotantotietokantaa merkittävästi jos ne palauttavat yllättävän suuren tulosjoukon.
Yksittäisen merkin jokerimerkkinä toimii alaviiva (_).
Seuraava kysely palauttaa kaikki automallit, jotka alkavat "LA", päättyvät "A":han ja joiden kolmas kirjain voi olla mikä tahansa.
SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Malli LIKE 'LA_A';
Tehokkaampia tapoja merkkijonohakuun, tietokantakohtaisia eroja sekä indeksointistrategioita käsitellään syvällisemmin SQL-koulutuksissamme.
Merkkijonojen yhdistäminen
SQL-kielessä merkkijonoja yhdistetään toisiinsa putkimerkkillä (||).
Esimerkiksi auton merkki ja malli voidaan yhdistää yhdeksi sarakkeeksi tulosjoukossa seuraavalla tavalla:
SELECT Merkki|| ',' || Malli AS Auto
FROM Autot;