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