SQL

Kuinka rajata kyselyn vaikutusaluetta SQL:n vertailuoperaattoreilla

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.

Vertailuoperaattorit

Vertailuoperaattoreilla vertaillaan lausekkeiden arvoja. Vertailu palauttaa yhden kolmesta loogisesta arvosta: tosi (True), epätosi (False) tai määrittämätön (Null)

Yhtäsuuruus

SQL-kielessä yhtäsuuruus merkitään =. Yhtäsuuruus on yleisin WHERE-ehdossa käytetty vertailuoperaattori. Tällöin sen avulla haetaan tietueet, joiden arvo vastaa täsmälleen annettua arvoa:


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Hinta = 50000;

Jos kysely löytää useita saman arvon sisältäviä tietueita, palauttaa se kaikki ehdot täyttävät tietueet.

Vaikka SQL itsessään ei ole nk. Case Sensitive, niin merkkijonoarvon yhtäsuuruutta vertaillessa ISOT ja pienet kirjaisimet käsitellään eri arvoina. Tästä syystä esimerkiksi alla oleva kysely ei todennäköisesti palauta tietueita:


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Malli = 'LADA';

Suurempi kuin ja pienempi kuin operaattorit

Vertailuoperaattorit suurempi kuin (>) ja pienempi kuin (<) mahdollistavat suuruus- ja pienuusvertailut. Näihin voi yhdistää yhtäsuuruuteen, jolloin yhtäsuuruusoperaattori sijoitetaan vertailuoperaattorimerkin oikealle puolelle — eli >= ja <=.


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Hinta <= 50000;

Numeeristen arvojen lisäksi vertailuoperaattorit toimivat myös merkkijonoilla. Tällöin vertailu perustuu aakkosjärjestykseen ja käytettyyn merkistöön, kuten UTF-8. Useimmissa järjestelmissä isot kirjaimet sijoittuvat ennen pieniä. Seuraavassa esimerkissä palautetaan kaikki autot, joiden malli on aakkosjärjestyksessä ennen tai sama kuin 'LADA'.


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Malli <= 'LADA';

Erisuuruus

Joskus halutaan hakea kaikki tietueet, jotka eivät vastaa tiettyä arvoa. Tätä varten käytetään erisuuruutta ilmaisevaa operaattoria <>.


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Malli <> 'LADA';

Toinen vaihtoehtoinen ja ei-standardi syntaksi erisuuruden ilmaisemiselle on !=-operaattori. Tämän käyttöä tulisi kuitenkin välttää.