LIKE

Merkkijonojen kohdalla voidaan tehdä hakuja myös osittain täsmäävillä arvoilla. Tämä tapahtuu operaattorilla LIKE varaamalla kaksi erikoismerkkiä normaalista poikkeavaan käyttöön.

  1. % tarkoittaa mitä tahansa merkkiä nolla tai useamman kerran.
  2. _ tarkoittaa mitä tahansa yksittäistä merkkiä.

/* Haetaan niiden sukunimet, joiden nimi alkaa M-kirjaimella. */

SELECT sukunimi

FROM Oppilaat

WHERE sukunimi LIKE 'M%'

Sukunimi

Meikäläinen

Meikäläinen

/* Haetaan niiden sukunimet, joiden nimi loppuu nen-merkkeihin. */

SELECT sukunimi

FROM Oppilaat

WHERE sukunimi LIKE '%nen'

sukunimi

Lahtonen

Heinonen

Meikäläinen

Meikäläinen

/* Haetaan niiden sukunimet ja etunimet, joiden etunimi on mikä tahansa viisi merkkiä pitkä nimi. */

SELECT sukunimi, etunimi

FROM Oppilaat

WHERE etunimi LIKE '_____' /* viisi (5) kappaletta alaviivoja */

sukunimi

etunimi

Lahtonen

Tommi

Heinonen

Petri

Meikäläinen

Maija

Wanha

Gubbe

Vilkas

Ville

Wanha

Gubbe

Joissakin ohjelmistoissa käytetään asteriskia (*) prosenttimerkin (%)-merkin sijaan ja kysymysmerkkiä (?)-merkkiä alleviivausmerkin (_)-merkin sijaan (kuten Microsoft Access).

Jos halutaan erityisesti hakea % tai _ merkkejä niin pitää määritellä jokin merkki jolla voidaan ilmaista että halutaan käsitellä % tai _ -merkkejä niiden literaalisessa merkityksessä. Tämä onnistuu ESCAPE-määreellä. Eli jos haluamme etsiä merkkijonot joissa esiintyy %-merkkejä joudumme tekemään haun tavallista =-operaattoria käyttäen. LIKE-operaattorin yhteydessä joudumme laittamaan jonkun ESCAPE-määreellä kerrotun merkin kaikkien % tai _ -merkkien eteen jos haluamme että kyseisessä kohdassa merkkijonoa pitää olla juuri % tai _ -merkki eikä mitä tahansa merkkejä.

/* Haetaan niiden sukunimet ja etunimet joiden etunimi alkaa %-merkillä ja loppuu _-merkkiin :)*/

SELECT sukunimi, etunimi

FROM Oppilaat

WHERE etunimi LIKE '!%%!_' ESCAPE !

sukunimi

etunimi