Guía para principiantes de LIKE en SQL Server

El operador LIKE de SQL Server se utiliza para búsqueda de texto de patrón y comodín. Usando LIKE con la cláusula WHERE podemos filtrar filas ya sea haciendo coincidir texto parcial o usando un comodín como marcador de posición para un carácter. Podemos utilizar la búsqueda de un solo carácter o de varios caracteres.

El posible uso del operador LIKE es cuando no sabemos el texto exacto para buscar pero tenemos palabras parciales. Usando texto parcial o subconjunto de texto, podemos encontrar las filas que podrían coincidir con nuestra entrada.

Supongamos que tenemos una lista de nombres de películas en una tabla y necesitamos encontrar las películas que tienen el texto "Harry". Es muy posible que la palabra "Harry" aparezca en cualquier lugar y no sabemos los nombres exactos de las películas completas. Podemos usar el patrón de búsqueda LIKE para encontrar nombres de películas que tengan la palabra "Harry" en cualquier lugar. En caso de que sepamos que los nombres de las películas comienzan con "Harry", podemos indicar al operador LIKE que busque el nombre al principio. Se pueden evaluar varias opciones utilizando la coincidencia de patrones LIKE.

Entendamos el diferentes caracteres comodín utilizado junto con el operador LIKE.

Sintaxis

WHERE expression LIKE pattern [escape character]

Patrón

La siguiente figura muestra el uso de cada carácter comodín utilizado con LIKE.

Me gusta el patrón WildCard del operador en SQL Server

Repasemos varios ejemplos para comprender cada patrón y sus usos. Estamos usando película tabla con diferentes nombres de películas como ejemplo para hacer una coincidencia de patrones con LIKE. Primero, cree una tabla de películas y rellénela con una lista de nombres como se muestra en el siguiente ejemplo.

USE tempdb;

IF OBJECT_ID('Movie','U') IS NOT NULL
DROP TABLE Movie;

CREATE TABLE Movie
(
 Id           INT  IDENTITY(1,1) PRIMARY KEY
,Name         VARCHAR(255)
,RunningTime  INT
,Star		  TINYINT 
);

INSERT INTO Movie VALUES
 ('The Godfather', 175, 9)
,('Ragging Bull', 129, 8)
,('The Godfather: Part II',202,9)
,('Forrest Gump',142,8)
,('The Godfather: Part III',162,7)
,('Fight Club',139,8)
,('Exam',101,6)
,('Titanc',194,7)
,('The Dark Knight Rises',164,8)
,('Die Hard', 132, 8)
,('100% Truth Lies',100,5)
,('Godzilla Part [II]',90, 4);

1.

% (porcentaje) Carácter comodín: patrón de extremo abierto

Si% (signo de porcentaje) es añadido al final de la cadena luego intentará encontrar todas las filas comenzando con el patrón de entrada. Por ejemplo COMO 'T%' buscará todas las filas que comiencen con el carácter T.

Si% (signo de porcentaje) es agregado al comienzo de la cadena luego intentará encontrar todas las filas que terminen con el patrón de entrada. Por ejemplo COMO '% T' buscará todas las filas que terminen con el carácter T.

Si% (signo de porcentaje) añadido al principio y al final del patrón de búsqueda luego buscará el patrón en cualquier parte de la cadena. COMO '% T%' buscará todas las filas donde el carácter T esté presente en cualquier lugar.

1.1 - La siguiente consulta coincide con todas las filas que tienen el nombre de la película comenzando con el carácter T.

--This will find movie names starting with T character.
SELECT  FROM Movie WHERE Name LIKE 'T%';
Id          Name                       RunningTime Star
----------- -------------------------- ----------- ----
1           The Godfather              175         9
3           The Godfather: Part II     202         9
5           The Godfather: Part III    162         7
8           Titanc                     194         7
9           The Dark Knight Rises      164         8

(5 rows affected)

1.2 - La siguiente consulta coincide con todas las filas donde el nombre de la película terminando con la palabra Club.

--This will find movie names ending with word Club.
SELECT  FROM Movie WHERE Name LIKE '%Club';
Id          Name         RunningTime Star
----------- ------------ ----------- ----
6           Fight Club   139         8

(1 row affected)

1.3 - La siguiente consulta coincide con todas las filas que tienen Parte de la palabra en cualquier parte del nombre.

--This will find movie names having Part word anywhere.
SELECT  FROM Movie WHERE Name LIKE '%Part%';
Id          Name                      RunningTime Star
----------- ------------------------- ----------- ----
3           The Godfather: Part II    202         9
5           The Godfather: Part III   162         7
12          Godzilla Part [II]        90          4

(3 rows affected)

2.

_ (Subrayado) comodín: coincidencia de uno o varios caracteres

Por ejemplo, solo conocemos algunos caracteres de una palabra y queremos probar todos los caracteres posibles. Podemos ampliar nuestra búsqueda usando (_) carácter comodín de subrayado junto con el comodín% (porcentaje). Podemos usar este carácter _ (guión bajo) como comodín para cualquier carácter único o múltiple en una coincidencia de patrón.

Por ejemplo, COMO 'C_ub%', este patrón coincidiría con el nombre de la película que comienza con Caub, Cbub, Ccub, Club, [email protected] y así. Todos los caracteres posibles se evaluarían en lugar de subrayado.

Podemos usar _ (guión bajo) para que el patrón de varios caracteres coincida de manera similar. COMO 'C__b%' - este patrón encontrará todos los nombres de películas que comiencen con Caab, Cabb, Club, [email protected]$ b, etc..

2.1 - Después de las coincidencias de consulta, todas las filas tienen T como primer carácter ye como tercer carácter. Probar todos los caracteres posibles en lugar de _ (guión bajo). Esto buscará Tae, Toe, Tme, The, etc.

--This will find movie names having T and e as 1st and 3rd character.
SELECT  FROM Movie WHERE Name LIKE 'T_e%';
Id          Name                      RunningTime Star
----------- ------------------------- ----------- ----
1           The Godfather             175         9
3           The Godfather: Part II    202         9
5           The Godfather: Part III   162         7
9           The Dark Knight Rises     164         8

(4 rows affected)

2.2 - Después de las coincidencias de consulta, todas las filas que tienen el nombre de la película donde G es el primer carácter yf es el cuarto carácter mientras se prueban todos los caracteres posibles en la tercera y cuarta posición. En nuestro caso, coincide G_ _padre.

--This will find movie names having G and F as 1st and 4rd character.
SELECT  FROM Movie WHERE Name LIKE '%G__f%';
Id          Name                      RunningTime Star
----------- ------------------------- ----------- ----
1           The Godfather             175         9
3           The Godfather: Part II    202         9
5           The Godfather: Part III   162         7

(3 rows affected)

3.

[ ] (Comodín entre corchetes): búsqueda de rango de caracteres

Nosotros podemos usar [ ] (Soporte) para especificar un rango de caracteres individuales. Por ejemplo, necesitamos encontrar nombres de películas que comiencen con el carácter D, E o F. Podemos especificar estos caracteres en el rango [D-F] y SQL ampliará este rango a D, E o F.

3.1 - En la siguiente consulta, encontramos todos los nombres de películas que comienzan con el carácter D, E o F. Dejará de hacer coincidir las filas después del carácter F.

--Movie name which start with either D, E of F character.
SELECT  FROM Movie WHERE NAME LIKE '[D-F]%';
Id          Name           RunningTime Star
----------- -------------- ----------- ----
4           Forrest Gump   142         8
6           Fight Club     139         8
7           Exam           101         6
10          Die Hard       132         8

(4 rows affected)

3.2 - La siguiente consulta utiliza un rango de caracteres entre A y D y coincide Aie, Bie, Cie y patrón de troquel.

--Movie name which start with either A,B,C or D.
SELECT  FROM Movie WHERE NAME LIKE '[A-D]ie%';
Id          Name         RunningTime Star
----------- ------------ ----------- ----
10          Die Hard     132         8

(1 row affected)

3.3 - La siguiente consulta utiliza un rango de caracteres entre A y C y coincide Aull, Toro, Matar buscando este patrón al final de los nombres de las películas.

--Movie name which ends with either A,B,C or D character word.
SELECT  FROM Movie WHERE NAME LIKE '%[A-C]ull';
Id          Name           RunningTime Star
----------- -------------- ----------- ----
2           Ragging Bull   129         8

(1 row affected)

4.

^ (Caret Wildcard): NO coincide con el carácter

Suponiendo que necesitemos encontrar todos los nombres de películas que no comiencen con personajes específicos. Utilizando ^ (Caret) comodín podemos crear un patrón que puede descuidar el carácter en el rango especificado.

4.1 - La siguiente consulta encuentra todos nombres de películas que no comienzan con el carácter T. Por lo tanto, la consulta no devuelve el nombre de una película como Titanic, El padrino.

--Caret - Movie names which doesn't start with character T
SELECT  FROM Movie WHERE NAME LIKE '[^T]%';
Id          Name                 RunningTime Star
----------- -------------------- ----------- ----
2           Ragging Bull         129         8
4           Forrest Gump         142         8
6           Fight Club           139         8
7           Exam                 101         6
10          Die Hard             132         8
11          100% Truth Lies      100         5
12          Godzilla Part [II]   90          4

(7 rows affected)

4.2 - La siguiente consulta busca todos los nombres de películas que no comienzan con los caracteres A, B o C. Por lo tanto, evita Aie, Bie, Cie pero coincide con Die.

--Caret - Movie names which doesn't start with character A or B.	
SELECT  FROM Movie WHERE NAME LIKE '[^A-B]ie%';
Id          Name        RunningTime Star
----------- ----------- ----------- ----
10          Die Hard    132         8

(1 row affected)

5.

Usar todos los comodines juntos en consultas

Sobre todo, hemos aprendido a utilizar diferentes caracteres comodín. Podemos combinar todos los comodines en un solo patrón para mejorar nuestra búsqueda.

5.1 - En la siguiente consulta, hemos combinado los cuatro caracteres comodín. En breve.

[A-D] - Nombres de películas que comienzan con el carácter A, B, C o D.

[ _ ] - Nombres de películas en las que no conocemos el segundo personaje, por lo que se utiliza un guión bajo para probar todos los caracteres posibles.

[^f] - Nombres de películas donde el tercer personaje no es f.

Como resultado, el patrón anterior coincide Morir palabra y regreso Morir duro nombre de pelicula.

Puede probar diferentes comodines como parte de la práctica para obtener resultados diferentes.

--Use of all wildcard characters together
SELECT  FROM Movie WHERE NAME LIKE '[A-D]_[^f]%';
Id          Name       RunningTime Star
----------- ---------- ----------- ----
10          Die Hard   132         8

(1 row affected)

6.

Uso del carácter de escape con el operador LIKE

Una situación particular cuando tenemos caracteres comodín en el texto para buscar. Supongamos que tenemos %, [ ] o ^ símbolo en nuestros registros. No podemos usar el operador LIKE normal para encontrar fácilmente estos símbolos, ya que estos caracteres son especiales, por lo que debemos usar Cláusula ESCAPE. Supongamos que tenemos el nombre de una película con un % símbolo en él. Utilizando COMO '%%%' no funcionará directamente. Necesitamos decirle a SQL Server que trate un símbolo% como un carácter regular especificando el carácter ESCAPE.

Utilizando COMO '% %%' ESCAPE '' - Aquí estamos usando un carácter diferente delante del carácter comodín para que SQL Server trate% como un carácter regular, no como un comodín.

La siguiente consulta usa '' como carácter de escape antes de% para que SQL Server trate% como un carácter regular en lugar de un comodín. El uso de una cláusula ESCAPE para indicar '' se usa como carácter de escape. Podemos usar cualquier otro símbolo en lugar de '' como carácter de escape.

6.1 - como carácter ESCAPE Para encontrar el símbolo%

-- as ESCAPE Character To find % Symbol
SELECT  FROM Movie WHERE NAME LIKE '%%%' ESCAPE '';
Id          Name                 RunningTime Star
----------- -------------------- ----------- ----
11          100% Truth Lies      100         5

(1 row affected)

6.2 - ! como carácter ESCAPE Para encontrar el símbolo%

--! as ESCAPE Character To find % Symbol
SELECT  FROM Movie WHERE NAME LIKE '%!%%' ESCAPE '!';
Id          Name                 RunningTime Star
----------- -------------------- ----------- ----
11          100% Truth Lies      100         5

(1 row affected)

6.3 - ! como personaje de ESCAPE para encontrar [ Symbol

--! as ESCAPE Character To find [ Symbol
SELECT  FROM Movie WHERE NAME LIKE '%![%' ESCAPE '!';
Id          Name                 RunningTime Star
----------- -------------------- ----------- ----
12          Godzilla Part [II]   90 4 (1 fila afectado)

6.4 - as ESCAPE Carácter para encontrar]Símbolo

-- as ESCAPE Character To find ] Symbol
SELECT  FROM Movie WHERE NAME LIKE '%]%' ESCAPE '';
Id          Name                 RunningTime Star
----------- -------------------- ----------- ----
12          Godzilla Part [II]   90          4

(1 row affected)

Resumen

Como resultado, hemos aprendido a usar el operador LIKE en SQL Server con diferentes caracteres comodín. Podemos utilizar este comodín para la búsqueda de uno o varios caracteres. Además, hemos visto cómo utilizar todos estos comodines en una sola consulta. También se usa el carácter ESCAPE para buscar caracteres comodín especiales en el texto. Si te gusta esta publicación, es posible que te gusten las publicaciones de archivos de Tech-Recipes Database.

Descubre más contenido

Subir