4.3 KiB
title | localeTitle |
---|---|
SQL LIKE Operator | Operador SQL LIKE |
Operador SQL LIKE
LIKE Operador definido
El operador LIKE
se utiliza en un WHERE
o HAVING
(como parte de GROUP BY
) para limitar las filas seleccionadas a los elementos cuando una columna tiene un patrón determinado de caracteres contenidos en él.
Esta guía demostrará:
- Determinar si una cadena comienza o termina con un patrón de cadena dado
- Determinar si existe un patrón en medio de la cadena
- Determinar si una cadena no está contenida en la cadena
Una columna comienza o termina con un patrón de cadena dado
Este SQL seleccionará a los estudiantes que tengan FullName
comenzando con "Monique" o terminando con "Greene".
SELECT studentID, FullName, sat_score, rcd_updated
FROM student
WHERE
FullName LIKE 'Monique%' OR -- note the % at the end but not the beginning
FullName LIKE '%Greene'; -- note the % at the beginning but not the end
+-----------+---------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+---------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
+-----------+---------------+-----------+---------------------+
2 rows in set (0.00 sec)
Un patrón de cadena está en el centro de la columna
Este SQL seleccionará a los estudiantes que tengan "ree" en cualquier parte del nombre.
SELECT studentID, FullName, sat_score, rcd_updated
FROM student
WHERE FullName LIKE '%ree%'; -- note the % at the beginning AND at the end
+-----------+----------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+----------------+-----------+---------------------+
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
+-----------+----------------+-----------+---------------------+
2 rows in set (0.00 sec)
Una cadena NO está en la columna
Puede colocar "NO" antes de LIKE para excluir las filas con el patrón de cadena en lugar de seleccionarlas. Este SQL excluye los registros que contienen "cer Pau" y "Ted" en la columna FullName.
SELECT studentID, FullName, sat_score, rcd_updated
FROM student
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
+-----------+----------------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+----------------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
7 rows in set (0.00 sec)
Aquí está la lista completa de estudiantes actual para comparar con los conjuntos de resultados de la cláusula where arriba.
SELECT studentID, FullName, sat_score, rcd_updated FROM student;
`` `texto + ----------- + ------------------------ + ----------- + --------------------- + | StudentID | Nombre completo | puntaje sat rcd actualizado | + ----------- + ------------------------ + ----------- + --------------------- + | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | + ----------- + ------------------------ + ----------- + --------------------- + 9 filas en conjunto (0,00 seg)