Consultes senzilles - BETWEEN - IN - LIKE
Operadors de comparació
A part dels comparadors >, <, =, >=, <=, <> en SQL hi ha uns altres comparadors.
Aquests comparadors són:
-
BETWEEN ... AND ... -
IN -
LIKE
BETWEEN ... AND ...
S’utilitza per a seleccionar dades segons un rang de valors.
Quan s'usa a la clàusula WHERE, la condició BETWEEN ... AND ... retorna el rang de valors entre els límits inferior i superior, incloent els límits.
Cal especificar sempre en primer cas el valor menor.
<camp> BETWEEN <valorInf> AND <valorSup>
En cas de negació utilitzarem la forma
<camp> NOT BETWEEN <valorInf> AND <valorSup>
Exemple BETWEEN ... AND ...
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY BETWEEN 3500 AND 5000;
+-------------+-----------+---------+
| EMPLOYEE_ID | LAST_NAME | SALARY |
+-------------+-----------+---------+
| 107 | Lorentz | 4200.00 |
| 141 | Rajs | 3500.00 |
| 200 | Whalen | 4400.00 |
+-------------+-----------+---------+
És equivalent a haver escrit la condició
WHERE SALARY >= 3500 AND SALARY <= 5000
IN
S’utilitza per a seleccionar dades segons uns valors discrets.
Equivaldria a utilitzar al conjunció OR diverses vegades.
<camp> IN (<valor1>, <valor2>, ...)
En cas de negació utilitzarem la forma
<camp> NOT IN (<valor1>, <valor2>, ...)
Exemple IN
SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10, 20, 60);
+-------------+-----------+---------------+
| EMPLOYEE_ID | LAST_NAME | DEPARTMENT_ID |
+-------------+-----------+---------------+
| 103 | Hunold | 60 |
| 104 | Ernst | 60 |
| 107 | Lorentz | 60 |
| 200 | Whalen | 10 |
| 201 | Hartstein | 20 |
| 202 | Fay | 20 |
+-------------+-----------+---------------+
Seria equivalent a haver escrit la condició
WHERE DEPARTMENT_ID = 10 OR
DEPARTMENT_ID = 20 OR
DEPARTMENT_ID = 60
LIKE
S’utilitza per a seleccionar dades que segueixen un patró determinat.
S’usa només en cadenes de caràcters i permet fer cerques no d’igualtat sinó de com.
S’utilitzen 2 caràcters comodí:
%equival a zero o més caràcters qualssevol_equival a un caràcter qualsevol
Si volem cercar el caràcter % o _ cal posar una contrabarra al seu davant (caràcter d’escape).
Per exemple: que acabi en % caldrà indicar LIKE '%\%'
Exemples LIKE
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE LAST_NAME LIKE 'A%';
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%A';
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%A%';
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%\_%';
IS NULL / IS NOT NULL
Quan cerquem informació on un camp ha de ser NUL o no ha de ser NUL, mai utilitzarem els operadors = ni <> (!=)
Utilitzarem els operadors
-
IS NULLen comptes de= NULLque és incorrecte -
IS NOT NULLen comptes dea <> NULLque és incorrecte
Exemples IS NULL / IS NOT NULL
SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IS NULL;
+-------------+-----------+---------------+
| EMPLOYEE_ID | LAST_NAME | DEPARTMENT_ID |
+-------------+-----------+---------------+
| 178 | Grant | NULL |
+-------------+-----------+---------------+
SELECT EMPLOYEE_ID, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL;
+-------------+-----------+---------------+
| EMPLOYEE_ID | LAST_NAME | DEPARTMENT_ID |
+-------------+-----------+---------------+
| 149 | Zlotkey | 0.20 |
| 174 | Abel | 0.30 |
| 176 | Taylor | 0.20 |
| 178 | Grant | 0.15 |