Problema:
Le gustaría encontrar una subcadena que coincida con un patrón en una cadena.
Ejemplo:
Nuestra base de datos tiene una tabla llamada cliente con datos en las siguientes columnas:id
, first_name
, last_name
y city
.
id | nombre | apellido | ciudad |
---|---|---|---|
1 | Alan | Watson | Madrid |
2 | Lisa | Negro | Singapur |
3 | Laura | Williams | Seattle |
4 | Milán | Ladrillo | Seúl |
Veamos algunos ejemplos de coincidencia de patrones en SQL.
Ejemplo 1:
Mostremos el nombre, el apellido y la ciudad de cada cliente cuyo nombre de ciudad comience con la letra 'S'.
Solución:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
apellido | nombre | ciudad |
---|---|---|
Lisa | Negro | S Singapur |
Milán | Ladrillo | S eoul |
Laura | Williams | S comer |
Usamos el comodín %, que representa cero o más caracteres desconocidos. Este comodín se puede usar en cualquier parte de la cadena.
Ejemplo 2:
Mostremos el nombre, el apellido y la ciudad de cada cliente cuyo nombre de ciudad contenga exactamente cinco caracteres.
Solución:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Aquí está el resultado:
apellido | nombre | ciudad |
---|---|---|
Milán | Ladrillo | Seúl |
El comodín de subrayado se puede utilizar para representar un único carácter desconocido. Por lo tanto, al usar cinco de ellos en una fila, podemos representar todas las cadenas que tienen cinco caracteres de largo. En nuestro ejemplo, la única ciudad que coincide con esa descripción es Seúl.
Ejemplo 3:
Mostremos el nombre, el apellido y la ciudad de cada cliente cuya ciudad comience con la letra 'S' y tenga la letra 'o' como penúltimo carácter.
Solución:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Aquí está el resultado:
apellido | nombre | ciudad |
---|---|---|
Lisa | Negro | S ingapo re |
Milán | Ladrillo | S eo ul |
La consulta devolvió solo dos registros:Lisa Black de S ingapo re y Milan Brick de S eo ul. Estas ciudades coinciden con el patrón dado. Aquí, combinamos ambos comodines para generar un patrón más específico:todas las cadenas que comienzan con una letra mayúscula 'S' y contienen cualquier número de otros caracteres después de eso, siempre que el penúltimo carácter sea una letra minúscula 'o. '
Discusión:
Si desea seleccionar registros en los que una cadena coincida con un patrón específico, puede usar LIKE
cláusula como la condición en un WHERE
cláusula. Después de WHERE
, escriba el nombre de la columna (por ejemplo, city
) seguido de un LIKE
cláusula que especifica el patrón de cadena (por ejemplo, 'S%o__'
) para buscar.
Como vimos en los ejemplos, puede usar dos caracteres especiales conocidos como comodines para representar caracteres desconocidos:
- El comodín '%' denota cero o más caracteres.
- El comodín '_' denota cualquier carácter único.
Puede combinar estos comodines para lograr resultados realmente poderosos. También puedes encadenar más de un LIKE
condición. Finalmente, puedes usar el NOT
operador para encontrar cadenas que no coincida con el patrón dado.