Més enllà de la igualtat

Índex

 

Operadors de desigualtat

La igualtat no és l'unica condició que podem imposar per a triar uns determinats regsitres. Sovint ens interessen les relacions de desigualtat i d'altres. Per a il·liustrar aquests punts farem servir una nova taula, referida al "Personal" d'una empresa, que té el contingut següent:

#

Amb WHERE, a més del símbol '=', es poden fer servir els operadors següents:

<> No igual que
> Més gran que
< Més petit que
>= Més gran o igual que
<= Més petit o igual que

Per exemple, volem fer la llista del personal del 2007 o més modern:

SELECT "Personal"."Antiguitat", "Personal"."Nom", "Personal"."Cognoms"
FROM "Personal"
WHERE "Antiguitat" >= 2007
ORDER BY "Antiguitat","Cognoms"

amb el resultat

#

 

Detecció d'intervals

També és possible recuperar les valors compresos entre dos extrems; això es fa amb l'especificació

BETWEEN 'valor_a' AND 'valor_b'

retorna els registres compresos entre els dos valors indicats (literals o numèrics). El contrari de BETWEEN és NOT BETWEEN.

Així, podem establir la consulta

SELECT "Nom", "Cognoms", "Antiguitat" FROM "Personal"
WHERE "Antiguitat" BETWEEN 2006 AND 2008
ORDER BY "Antiguitat"

amb el resultat següent:

#

 

L'operador LIKE

En els usos més simples, l'operador LIKE és equivalent a l'operador '=', però LIKE permet cerques més refinades. Acompanyat dels comodins '*' o '%' ('*' en Access), permet detectar fragments de camp.

Tornarem a la taula "Socis", que repetim:

#

Suposem qua cerquem un treballador que ara no recordem si es diu 'Bellmunt' o 'Claramunt'; el que sí que sabem segur és que el gognom acaba en 'munt'. Escrivim doncs

SELECT "IdS", "N_Soci", "Nom", "Cognom" FROM "Socis"
WHERE "Cognom" LIKE '%munt%'

I el resultat és el següent:

#

Si només fem servir el comodí final, equivaldrà a dir "que tal camp comenci amb tal cadena":

SELECT "IdS", "N_Soci", "Nom", "Cognom" FROM "Socis"
WHERE "Cognom" LIKE 'M%'

que ens retorna tots els socis el cognom dels qual comença per "M":

#

Si volem precisar que la cadena omesa és d'un sol caràcter, fem servir '_' en lloc de '%'.

El contrari de LIKE és NOT LIKE, i es fa servir igual.

Per a la deteció de valors en un camp booleà fem servir els valors TRUE i FALSE.

 

Camps nuls

Per als camps buits (no obligatoris on no hem escrit encara res) tenim les especificacions IS NULL (= és nul) (i la contrària IS NOT NULL.

Continuem fent servir la taula "Socis". Observem que hi ha algun camp en blanc, i volem recuperar, per exemple, els casos en què no hi ha telèfon; establim la consulta

SELECT "IdS", "Cognom", "Nom", "Adreça" FROM "Socis" WHERE "Telf" IS NULL

que ens dona el resultat següent

#