Salta el contingut

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

Empleats amb Cognom que comença per A
SELECT  EMPLOYEE_ID, LAST_NAME, SALARY
FROM    EMPLOYEES
WHERE   LAST_NAME LIKE 'A%';
Empleats amb Cognom que acaba en A
SELECT  EMPLOYEE_ID, LAST_NAME, SALARY
FROM    EMPLOYEES
WHERE   LAST_NAME LIKE '%A';
Empleats amb Cognom que conté una A
SELECT  EMPLOYEE_ID, LAST_NAME, SALARY
FROM    EMPLOYEES
WHERE   LAST_NAME LIKE '%A%';
Empleats amb Cognom que conté un _
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 NULL en comptes de = NULL que és incorrecte

  • IS NOT NULL en comptes de a <> NULL que é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 |