2. LENGUAJE DE MANIPULACIÓN DE DATOS (DML, DATA MANAGEMENT LANGUAGE).

2.6. EL OPERADOR LIKE EN SQL

En el tutorial anterior aprendimos a utilizar el operador IN para comprobar si una fila coincidía con alguno de los valores de una lista específica. Sin embargo, existen casos donde necesitamos buscar coincidencias más flexibles, por ejemplo, cuando deseamos encontrar filas que cumplen con un patrón en una cadena de texto.

En estos casos, podemos utilizar los operadores LIKE y NOT LIKE, que permiten filtrar registros basándose en si el contenido de una columna coincide (o no) con un patrón determinado.

Por ejemplo, podemos transformar la instrucción en lenguaje natural:

"Encuentra todos los medicamentos cuyo nombre comienza con 'A' y termina en 'Y'" en una consulta SQL como:

WHERE drug LIKE 'A%Y'


Sintaxis de LIKE

SELECT columna1, columna2, ...
FROM nombre_tabla
WHERE columna LIKE patrón
AND/OR columna NOT LIKE patrón;

Uso de comodines

El operador LIKE se utiliza con comodines para definir los patrones de búsqueda:

  • %: Representa cero o más caracteres.
  • _: Representa un único carácter.
  • Estos comodines hacen que las búsquedas sean más dinámicas, permitiendo encontrar coincidencias sin tener que conocer el valor exacto completo.

    Ejemplo práctico

    Imagina que trabajas como analista de datos en CVS Pharmacy y tienes acceso a la tabla pharmacysales con información sobre las ventas de medicamentos. Un fragmento de los datos es el siguiente:

    prod_id phsa_fabricante phsa_droga phsa_ventastotales
    61 Biogen Alivio varicose 500,101.61
    63 Johnson & Johnson Reductor de ácido Pepcid AC 2,104,765.00
    79 AstraZeneca Green Guard Stomach Relief 3,560,527.35
    80 Biogen Potasio de Losartán 3,740,527.69
    84 Pfizer Tranexamic Acid 2,752,163.00
    130 Johnson & Johnson Medi-Primer alivio del frío 3,556,698.88
    131 Biogen ESIKA 1,540,350.32

    Ahora supongamos que deseas seleccionar todas las drogas que contienen la palabra "Relief" en su nombre. La consulta sería:

    En lugar de escribir múltiples condiciones con OR, puedes hacerlo de forma más concisa así:

    SELECT prod_id, phsa_fabricante, phsa_drogaz
    FROM pharmacysales
    WHERE phsa_droga LIKE '%Relief%';


    Explicación:

    • El comodín % antes y después de "Relief" indica que pueden existir cualquier cantidad de caracteres antes y después de esa palabra.
    • Así, la consulta devuelve todas las filas en las que la palabra "Relief" aparezca en cualquier posición del nombre del medicamento.
    • Salida esperada:

      phsa_fabricante phsa_droga phsa_ventastotales
      AstraZeneca Green Guard Stomach Relief 3,560,527.35

      Uso de comodines (wildcards) con LIKE en SQL

      En la lección anterior aprendimos cómo el operador LIKE nos permite buscar registros que coincidan con un patrón específico dentro de una columna de texto. Para potenciar esta funcionalidad, SQL nos ofrece comodines (wildcards), que permiten realizar búsquedas mucho más flexibles.

      El comodín %

      El comodín % representa cero o más caracteres. Es decir, puede sustituir cualquier cantidad de letras (incluso ninguna) en la búsqueda.

      Ejemplo práctico:

      Imagina que deseas encontrar empleados cuyo nombre empiece con "Ke" y termine con "y", sin importar qué caracteres haya en el medio.

      La consulta sería:

      SELECT * FROM employees
      WHERE first_name LIKE 'Ke%y';

      Con esta consulta se obtendrán nombres como Kerry, Kenny o Kelsey.

      El comodín _

      El subrayado _ representa exactamente un carácter. Es útil para buscar palabras con una cantidad exacta de letras o con caracteres en posiciones específicas.

      Ejemplo práctico:

      Supongamos que deseas buscar todas las palabras de 4 letras en un diccionario que comiencen con "f" y tengan "c" como tercera letra:

      SELECT * FROM dictionary_words
      WHERE word LIKE 'f_c_';

      Esto seleccionará palabras como face o fact.

      Resumen de patrones con LIKE

      A continuación, algunos patrones comunes que puedes utilizar como referencia rápida:

      Consulta Definición
      WHERE first_name LIKE 'a%' Encuentra cualquier valor que comience con "a".
      WHERE first_name LIKE '%a' Encuentra cualquier valor que termine con "a".
      WHERE first_name LIKE '%ae%' Encuentra cualquier valor que contenga "ae" en medio.
      WHERE first_name LIKE '_b%' Encuentra cualquier valor con "b" en la segunda posición.
      WHERE first_name LIKE 'a%o' Encuentra cualquier valor que comience con "a" y termine con "o".
      WHERE first_name LIKE 'a___' Encuentra cualquier valor que comience con "a" y tenga exactamente 4 caracteres.

      Importancia de la práctica

      El dominio del uso de LIKE con comodines solo se logra practicando. Combinar estos patrones de manera estratégica te permitirá realizar búsquedas mucho más eficientes y precisas en bases de datos.

      SQL LIKE % Practico

      Ejercicio de práctica de SQL LIKE

      Problema de la práctica

      Encuentra a todos los clientes cuyo nombre empice con 'S' y termine en 'X'

      Ejercicio #1

      Contexto: Búsqueda de productos con patrones (LIKE) – TechStore

      La empresa TechStore cuenta con un inventario de más de 1.000 productos tecnológicos, y el equipo de análisis necesita encontrar ciertos artículos basándose en patrones de texto en sus nombres.

      Requerimiento:

      Escribe una consulta SQL que obtenga todos los productos cuyo:

      1. Nombre comience con la letra "S", y

      2. El modelo termine con las letras "X".

      Estructura de la tabla:

      columna tipodato
      prod_id INTEGER
      prod_nombre TEXT
      prod_categoria TEXT
      prod_precio NUMERIC
      prod_stock INTEGER
      prod_fabricante TEXT

      Datos de ejemplo:

      prod_id prod_nombre prod_categoria prod_precio prod_stock prod_fabricante
      1 Samsung Galaxy S23X Smartphones 3500.00 45 Samsung
      2 Sony Bravia 55X Televisores 2700.00 20 Sony
      3 HP Spectre Pro Portátiles 4900.00 10 HP
      4 SmartHome Hub MaxX Domótica 800.00 30 SmartHome Inc.

      Ejercicio #2

      Contexto: Uso de comodines con LIKE

      Una pequeña empresa con sede en Australia almacena información de 1.000 clientes en su base de datos. El equipo de análisis necesita filtrar clientes basándose en un patrón específico en los nombres.

      Requerimiento:

      Escribe una consulta SQL que obtenga todos los clientes donde la segunda y tercera letra de su nombre sean "e".

      Ejemplo:

      Nombres como "Reece Smith" cumplen con este patrón.

      Estructura de la tabla:

      columna tipodato
      clie_id INTEGER
      clie_nombre TEXT
      clie_genero TEXT
      clie_edad INT
      clie_codigopostal INT
      clie_ciudad TEXT
      clie_estadociudad TEXT

      Datos de ejemplo:

      clie_id clie_nombre clie_genero clie_edad clie_codigopostal clie_ciudad clie_estadociudad
      1 Ignacio Perez Masculino 30 5464 Barranquilla Atlántico
      2 Graciela Espriella Femenino 69 8223 Cartagena Bolívar
      3 Elberth Lopez Masculino 59 5661 Santa Marta Magdalena


      -------------------------------------------------------------------------------------------------------------

      SIGUIENTE - FILTRO