sql >> Base de Datos >  >> RDS >> Mysql

Cómo funciona el operador LIKE en MySQL

En MySQL, el LIKE El operador realiza la coincidencia de patrones usando un patrón SQL.

Si la cadena coincide con el patrón proporcionado, el resultado es 1 , de lo contrario es 0 .

El patrón no necesariamente tiene que ser una cadena literal. Esta función se puede utilizar con expresiones de cadena y columnas de tabla.

Sintaxis

La sintaxis es así:

expr LIKE pat [ESCAPE 'escape_char']

Donde expr es la cadena de entrada y pat es el patrón contra el que está probando la cadena.

El ESCAPE opcional cláusula le permite especificar un carácter de escape. El carácter de escape predeterminado es \ , por lo que puede omitir esta cláusula si no necesita cambiarla.

Ejemplo 1:uso básico

Aquí hay un ejemplo de cómo usar este operador en un SELECT declaración:

SELECT 'Charlie' LIKE 'Char%';

Resultado:

+------------------------+
| 'Charlie' LIKE 'Char%' |
+------------------------+
|                      1 |
+------------------------+

En este caso, el valor de retorno es 1 lo que significa que la cadena de entrada coincidió con el patrón. En particular, especificamos que la cadena de entrada debe comenzar con Char y terminar con cualquier cosa. El % carácter coincide con cualquier número de caracteres (incluidos cero caracteres).

Esto es lo que sucede si dejamos caer el % :

SELECT 'Charlie' LIKE 'Char';

Resultado:

+-----------------------+
| 'Charlie' LIKE 'Char' |
+-----------------------+
|                     0 |
+-----------------------+

El resultado devuelto es 0 lo que significa que no hay coincidencia. Esto se debe a que no usamos un carácter comodín para especificar ningún otro carácter.

Ejemplo 2:el _ Comodín

También tenemos la opción de usar el _ carácter comodín para especificar un único carácter. He aquí un ejemplo:

SELECT 'Charlie' LIKE 'Ch_rlie';

Resultado:

+--------------------------+
| 'Charlie' LIKE 'Ch_rlie' |
+--------------------------+
|                        1 |
+--------------------------+

Los dos caracteres comodín se pueden combinar dentro de un patrón si es necesario:

SELECT 'Charlie likes donuts' LIKE 'Ch_rlie%' AS 'Result';

Resultado:

+--------+
| Result |
+--------+
|      1 |
+--------+

Aquí hay algunos más:

SELECT 
  'Charlie likes donuts' LIKE 'Ch_rlie%donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Ch_rlie%nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Ch%rlie %likes %' AS 'Result 3',
  'Charlie likes donuts' LIKE '% likes %' AS 'Result 4';

Resultado:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        1 |        1 |        1 |        1 |
+----------+----------+----------+----------+

Hagamos algunos cambios en ese ejemplo para que podamos ver algunos ejemplos de cuando no coinciden:

SELECT 
  'Charlie likes donuts' LIKE 'Ch%rlie_donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Charlie_nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Charlie _likes donuts' AS 'Result 3',
  'Charlie likes donuts' LIKE '_ likes _' AS 'Result 4';

Resultado:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        0 |        0 |        0 |        0 |
+----------+----------+----------+----------+

Ejemplo 3:un ejemplo de base de datos

El LIKE El operador se usa a menudo dentro de un WHERE cláusula de un SELECT declaración al consultar una base de datos. Cuando se usa de esta manera, reduce los resultados a solo aquellos registros que coinciden, pero vemos los resultados reales (no solo un 1 o 0 ).

Aquí hay un ejemplo de cómo podemos usar este operador dentro de una consulta de base de datos:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

Resultado:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

En este caso, fue una consulta simple que devuelve todos los artistas cuyos nombres comienzan con la letra B .

Aquí está la lista completa de artistas en esa tabla:

SELECT ArtistId, ArtistName
FROM Artists;

Resultado:

+----------+------------------------+
| ArtistId | ArtistName             |
+----------+------------------------+
|        1 | Iron Maiden            |
|        2 | AC/DC                  |
|        3 | Allan Holdsworth       |
|        4 | Buddy Rich             |
|        5 | Devin Townsend         |
|        6 | Jim Reeves             |
|        7 | Tom Jones              |
|        8 | Maroon 5               |
|        9 | The Script             |
|       10 | Lit                    |
|       11 | Black Sabbath          |
|       12 | Michael Learns to Rock |
|       13 | Carabao                |
|       14 | Karnivool              |
|       15 | Birds of Tokyo         |
|       16 | Bodyjar                |
+----------+------------------------+

Ejemplo 4:escapar con el carácter de barra invertida

¿Qué sucede si uno de los caracteres comodín está en su cadena de entrada y necesita realizar una coincidencia con él? Puede escapar con el carácter de barra invertida (\ ). Aquí hay un ejemplo de una búsqueda de este tipo con y sin el carácter de escape:

SELECT 
  'usr_123' LIKE 'usr_123' AS 'Without escape',
  'usr_123' LIKE 'usr\_123' AS 'With escape';

Resultado:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           1 |
+----------------+-------------+

En este caso, ambos coincidían, pero por razones diferentes. La primera línea coincidió porque el comodín especificó que cualquier carácter coincidirá. La segunda línea también coincidió, pero solo porque la cadena de entrada tenía un guión bajo en el lugar correcto.

Cambiemos ligeramente la cadena de entrada para obtener un resultado diferente:

SELECT 
  'usr+123' LIKE 'usr_123' AS 'Without escape',
  'usr+123' LIKE 'usr\_123' AS 'With escape';

Resultado:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           0 |
+----------------+-------------+

La versión sin escape dio positivo, porque el comodín significaba que podíamos tener cualquier personaje en ese lugar. La versión escapada declaraba explícitamente que solo el carácter de subrayado (_ ) coincidirá. La cadena de entrada no tenía un carácter de subrayado en ese lugar, por lo que el resultado fue negativo.

Ejemplo 5:el ESCAPE Cláusula

También puedes usar el ESCAPE cláusula para especificar su propio carácter de escape personalizado. He aquí un ejemplo:

SELECT 
  'usr_123' LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

Resultado:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        1 |        0 |
+----------+----------+

Ejemplo 6:Expresiones numéricas

La implementación MySQL de LIKE El operador permite utilizar expresiones numéricas. He aquí un ejemplo:

SELECT 
  1234 LIKE '12%',
  1234 LIKE '12_';

Resultado:

+-----------------+-----------------+
| 1234 LIKE '12%' | 1234 LIKE '12_' |
+-----------------+-----------------+
|               1 |               0 |
+-----------------+-----------------+