Lección 3 de SQL: Consultas con restricciones (Parte 2)
Al escribir cláusulas WHERE
con columnas que contienen datos de texto, SQL admite una serie de operadores útiles para realizar tareas como la comparación de cadenas sin distinción entre mayúsculas y minúsculas y la coincidencia de patrones con comodines. A continuación, mostramos algunos operadores comunes específicos de datos de texto:
Operador | Condición | Ejemplo |
---|---|---|
= |
Comparación exacta de cadenas que distingue entre mayúsculas y minúsculas ( observe el signo igual ) | nombre_col = "abc" |
!= o <> |
Comparación exacta de desigualdad de cadenas que distingue entre mayúsculas y minúsculas | nombre_col != "abcd" |
LIKE |
Comparación exacta de cadenas sin distinción entre mayúsculas y minúsculas | nombre_col LIKE "ABC" |
NOT LIKE |
Comparación exacta de desigualdad de cadenas sin distinción entre mayúsculas y minúsculas | nombre_col NOT LIKE "ABCD" |
% |
Se utiliza en cualquier parte de una cadena para hacer coincidir una secuencia de cero o más caracteres (solo con LIKE o NOT LIKE) | nombre_col LIKE "%AT%" (coincide con "AT", "ATTIC", "CAT" o incluso "BATS") |
_ |
Se utiliza en cualquier parte de una cadena para que coincida con un solo carácter (solo con LIKE o NOT LIKE) | nombre_col LIKE "AN_" (coincide con "AND", pero no con "AN") |
IN (…) |
La cadena existe en una lista | nombre_col IN ("A", "B", "C") |
NOT IN (…) |
La cadena no existe en una lista | nombre_col NOT IN ("D", "E", "F") |
¿Sabías?
Todas las cadenas deben estar entre comillas para que el analizador de consultas pueda distinguir las palabras de la cadena de las palabras clave de SQL.
Cabe señalar que, si bien la mayoría de las implementaciones de bases de datos son bastante eficientes al utilizar estos operadores, es mejor dejar la búsqueda de texto completo en manos de bibliotecas especializadas como Apache Lucene o Sphinx. Estas bibliotecas están diseñadas específicamente para realizar búsquedas de texto completo y, como resultado, son más eficientes y pueden admitir una variedad más amplia de funciones de búsqueda, incluidas la internacionalización y las consultas avanzadas.
Ejercicio
Aquí está nuevamente la definición de una consulta con una cláusula WHERE
. Siga adelante e intente escribir algunas consultas con los operadores anteriores para limitar los resultados a la información que necesitamos en las tareas a continuación.
- Consulta de selección con restricciones
SELECT column, another_column, …
FROM mytable
WHERE condition
AND/OR another_condition
AND/OR …;
- Encuentra todas las películas de Toy Story.
- Encuentra todas las películas dirigidas por John Lasseter.
- Encuentra todas las películas (y directores) no dirigidas por John Lasseter.
- Encuentra todas las películas de WALL-