English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operador LIKE de SQL

En este tutorial, aprenderá cómo recuperar datos basándose en coincidencias parciales.

Coincidencia de patrones

Hasta ahora, ha visto condiciones que identifican cadenas de caracteres exactas, como WHERE name='Lois Lane'. Pero en SQL, también puede usar el operador LIKE para realizar coincidencias parciales o patrones.

El operador LIKE permite especificar un o varios caracteres como comodines para proporcionar un patrones de coincidencia. Puede usar los siguientes dos comodines:

  • Porcentaje (%) - Coincide con cualquier cantidad de caracteres, incluso cero.

  • Subrayado (_) - Coincidencia exacta de un carácter

Estos son algunos ejemplos que muestran cómo usar el operador LIKE con corchetes de comodín.

DeclaraciónSignificadoValor devuelto
WHERE name LIKE 'Da%'

para encontrar nombres que comienzan con 'Da'

David, Davidson
WHERE name LIKE '%th'para encontrar nombres que comienzan conthcon nombre que terminaElizabeth, Smith
WHERE name LIKE '%on%'

para encontrar nombres que contengan 'on'

Davidson, Toni
WHERE name LIKE 'Sa_'

para encontrar nombres que comienzan con 'Sa' y tienen un máximo de un carácter después

Sa
WHERE name LIKE '_oy'

para encontrar nombres que terminan en 'oy' y contienen un máximo de un carácter

Joy, Roy
WHERE name LIKE '_an_'para encontrar nombres que contenganancon nombre, que comienza y termina con un carácterDana, Hans
WHERE name LIKE '%ar_'para encontrar nombres que contenganarcon nombre, que comienza con cualquier número de caracteres y termina con un máximo de un carácterRichard, Karl
WHERE name LIKE '_ar%'para encontrar nombres que contenganarcon nombre, que comienza con un carácter y termina con cualquier número de caracteresKarl, Mariya

Al buscar algunos registros, llevemos a la práctica la declaración discutida anteriormente.

ConsideremosemployeesEn la base de datos hay una tabla que contiene los siguientes registros:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name | fecha_contratación | salario | dept_id |
+--------+------------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 | NULL |
|      6 | simons bistro | 2009-04-01 |   6000 |       1 |
+--------+------------------+------------+--------+---------+

Ahora, supongamos que desea encontrar todos los empleados que comienzan con la letra S.

SELECT * FROM employees 
WHERE emp_name LIKE 'S%';

Después de ejecutar la consulta, obtendrá el siguiente resultado:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name | fecha_contratación | salario | dept_id |
+--------+------------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      6 | simons bistro | 2009-04-01 |   6000 |       1 |
+--------+------------------+------------+--------+---------+

En MySQL, la comparación de cadenas no binarias (CHAR, VARCHAR, TEXT) es sensible a mayúsculas y minúsculas por defecto, mientras que la comparación de cadenas binarias (BINARY, VARBINARY, BLOB) es sensible a mayúsculas y minúsculas.

Esto significa que si utiliza la búsqueda WHERE name LIKE 'S%' obtendrá todos los valores de columnas que comienzan con S o s (como puede ver, tenemos tanto 'Sarah' como 'simons'). Sin embargo, si desea que esta búsqueda sea sensible a mayúsculas y minúsculas, puede usar el operador BINARY de la siguiente manera:

-- Sintaxis para la base de datos MySQL 
SELECT * FROM employees 
WHERE BINARY emp_name LIKE 'S%';

Ahora, esta consulta solo devolverá empleados cuyos nombres comienzan con la letra S en mayúscula:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name | fecha_contratación | salario | dept_id |
+--------+------------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+------------------+------------+--------+---------+

Nota:Si desea tratar siempre las columnas de manera sensible a mayúsculas y minúsculas, declare las reglas de ordenación sensible a mayúsculas y minúsculas o binarias para evitar problemas de rendimiento.

Consejo:Cuando no conoce la forma exacta de la cadena de búsqueda, la coincidencia parcial es muy útil. También puede usar la coincidencia parcial para recuperar múltiples filas que contienen cadenas de caracteres similares en una columna de la tabla.