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 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

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    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
+-------------+------------+-------------------+

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 '[email protected]%.com';

Resultado:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
+-------------+------------+------------------+

En este caso, no sabíamos la dirección de correo electrónico de bart, pero sabíamos que empezaba con [email protected] 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       | [email protected] |
| Burt        | Tyson      | [email protected] |
+-------------+------------+------------------+

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    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Boris       | Trump      | NULL              |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

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   | [email protected] |
+-------------+------------+-------------------+

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    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

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).