sql >> Base de Datos >  >> RDS >> Database

Operador SQL LIKE para principiantes

En SQL, el LIKE operador le permite hacer coincidencia de patrones. Determina si una cadena de caracteres específica coincide con un patrón específico.

Un patrón puede incluir caracteres regulares y caracteres comodín.

Tabla de origen

La siguiente tabla se utiliza para los ejemplos de esta página.

SELECT * FROM Owners;

Resultado:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | example@sqldat.com |
| 2         | Bart        | Pitt       | (231) 465-3497 | example@sqldat.com  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | example@sqldat.com |
| 6         | Burt        | Tyson      | (309) 565-0112 | example@sqldat.com  |
+-----------+-------------+------------+----------------+-------------------+

Ejemplo

Aquí hay un ejemplo para demostrar cómo LIKE opera el operador.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%.com';

Resultado:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | example@sqldat.com |
| Bart        | Pitt       | example@sqldat.com  |
| Woody       | Eastwood   | example@sqldat.com |
+-------------+------------+-------------------+

En este ejemplo, utilicé LIKE operador junto con el % operador comodín para devolver los propietarios cuyas direcciones de correo electrónico terminan en .com .

LIKE también se puede usar con otros operadores de cadenas, como _ , [] y [^] .

El % Operador comodín

El % El operador comodín coincide con cualquier cadena de cero o más caracteres. Se puede usar como prefijo o sufijo, y también se puede usar en medio de una cadena.

Tiende a usarse más comúnmente como sufijo y tiene un uso limitado en medio de patrones, aunque existen algunos casos de uso válidos para usarlo en medio de un patrón, como los siguientes:

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE 'example@sqldat.com%.com';

Resultado:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | example@sqldat.com |
+-------------+------------+------------------+

En este caso, no sabíamos la dirección de correo electrónico de bart, pero sabíamos que empezaba con example@sqldat.com y terminó en .com . Por lo tanto, pudimos usar LIKE junto con el % operador comodín para completar el resto.

Tenga en cuenta que esta técnica puede devolver muchas filas irrelevantes, dependiendo de los datos y de cómo construya su declaración SQL.

El _ Operador comodín

El guión bajo (_ ) el operador comodín coincide con cualquier carácter individual.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE 'b_rt';

Resultado:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | example@sqldat.com |
| Burt        | Tyson      | example@sqldat.com |
+-------------+------------+------------------+

El [] Operador comodín

Los corchetes ([] ) el operador comodín coincide con cualquier carácter individual dentro del rango o conjunto especificado que se especifica entre corchetes.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[bh]%';

Resultado:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | example@sqldat.com |
| Bart        | Pitt       | example@sqldat.com  |
| Boris       | Trump      | NULL              |
| Burt        | Tyson      | example@sqldat.com  |
+-------------+------------+-------------------+

Aquí, combiné el comodín de corchetes con el signo de porcentaje para devolver todos los propietarios cuyo nombre comienza con b o h .

Tenga en cuenta que el operador de corchetes no tiene una adopción generalizada en los DBMS. Es compatible con SQL Server, pero no es compatible con MySQL, Oracle, DB2 y SQLite. Consulte la documentación de su DBMS para ver si es compatible con este operador.

El [^] Operador comodín

El carácter de intercalación (^ ) se puede usar para negar los resultados cuando se usa el operador de paréntesis.

Por lo tanto, cambiamos el ejemplo anterior para devolver solo aquellos propietarios cuyo primer nombre no empieza con b o h .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[^bh]%';

Resultado:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Nancy       | Simpson    | NULL              |
| Woody       | Eastwood   | example@sqldat.com |
+-------------+------------+-------------------+

Valores NULOS

El porcentaje (% ) el comodín coincide con cualquier cosa, casi. Una cosa que no coincide es NULL .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%';

Resultado:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | example@sqldat.com |
| Bart        | Pitt       | example@sqldat.com  |
| Woody       | Eastwood   | example@sqldat.com |
| Burt        | Tyson      | example@sqldat.com  |
+-------------+------------+-------------------+

En nuestra tabla, hay dos filas con NULL en el Email columna, pero no se devuelven aquí.

Rendimiento

Consultas que contienen el LIKE El operador puede ejecutarse mucho más lento que otras consultas, y probablemente debería evitar usar LIKE operador a menos que realmente lo necesite. Usando el % operador como prefijo puede ser particularmente lento.

Eso no quiere decir que no debas usarlo en absoluto. El LIKE operator es una parte integral de SQL, y encontrará muchos escenarios en los que será la única opción (o al menos, la mejor opción).