Coincidencias de patrón en condiciones de búsqueda

La palabra clave LIKE busca valores de cadenas de caracteres, de fecha o de hora que coincidan con un patrón determinado. Para obtener más información, vea Tipos de datos (Transact-SQL). La palabra clave LIKE utiliza una expresión regular para contener el patrón con el que se comparan los valores. El patrón contiene la cadena de caracteres que se va a buscar, que puede estar compuesta por cualquier combinación de cuatro caracteres comodín:

Comodín

Significado

%

Cualquier cadena de cero o más caracteres.

_

Cualquier carácter.

[ ]

Cualquier carácter individual del intervalo (por ejemplo, [a-f]) o conjunto (por ejemplo, [abcdef]) especificado.

[^]

Cualquier carácter individual fuera del intervalo (por ejemplo, [^a - f]) o conjunto (por ejemplo, [^abcdef]) especificado.

Incluya los caracteres comodín y la cadena de caracteres entre comillas simples, por ejemplo:

  • LIKE ‘Mc%’ busca todas las cadenas que comiencen con las letras "Mc" (McBadden).

  • LIKE ‘%inger’ busca todas las cadenas que finalicen con las letras "inger" (Ringer, Stringer).

  • LIKE ‘%en%’ busca todas las cadenas que contienen las letras "en" en alguna parte de la cadena (Bennet, Green, McBadden).

  • LIKE ‘_heryl’ busca todos los nombres de seis letras que terminan con las letras "heryl" (Cheryl, Sheryl).

  • LIKE ‘[CK]ars[eo]n’ busca Carsen, Karsen, Carson y Karson.

  • LIKE ‘[M-Z]inger’ busca todos los nombres que terminen por "inger" y que empiecen con cualquier letra entre M y Z (Ringer).

  • LIKE ‘M[^c]%’ busca todos los nombres que empiecen con la letra M que no tengan la letra "c" como segunda letra (MacFeather).

En la siguiente consulta se buscan todos los números de teléfono de la tabla Person que tengan el código de área 415:

SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE Phone LIKE '415%';

Puede usar NOT LIKE con los mismos comodines. Para buscar todos los números de teléfono de la tabla Person que tengan códigos de área distintos de 415, use alguna de estas consultas equivalentes:

SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE Phone NOT LIKE '415%';

-- Or

SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE NOT Phone LIKE '415%';

La cláusula IS NOT NULL se puede usar con comodines y la cláusula LIKE. Por ejemplo, la siguiente consulta recupera los números de teléfono de la tabla Person que empiecen por 415 y cumplan la condición IS NOT NULL:

USE AdventureWorks2008R2;
GO
SELECT Phone
FROM Person.Person
WHERE Phone LIKE '415%' and Phone IS NOT NULL;
Nota importanteImportante

El resultado de las instrucciones que contienen la palabra clave LIKE depende del orden elegido durante la instalación. Para obtener más información acerca de los efectos de diferentes ordenaciones, vea Trabajar con intercalaciones.

Las únicas condiciones WHERE que puede utilizar en las columnas text son LIKE, IS NULL o PATINDEX.

Los comodines usados sin LIKE se interpretan como constantes en lugar de como un patrón; es decir, representan sus propios valores. La siguiente consulta intenta buscar cualquier número de teléfono que conste de los cuatro caracteres 415% únicamente. No encontrará números de teléfono que comiencen con 415. Para obtener más información acerca de constantes, vea Constantes (motor de base de datos).

SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE Phone = '415%';

Otra consideración importante acerca de la utilización de caracteres comodín es su efecto en el rendimiento. Si la expresión empieza con un comodín, no se puede utilizar un índice. (Exactamente igual que no sabría por dónde empezar en una guía telefónica si le dieran el nombre "%mith" en lugar de "Smith"). Un comodín en una expresión o al final de la misma no impide la utilización de un índice. (Igual que en una guía telefónica, sabría por dónde empezar a buscar si el nombre fuera '"Samuel%", tanto si los nombres Samuels y Samuelson están en la guía como si no).

Buscar caracteres comodín

Puede buscar caracteres comodín. Hay dos formas de especificar un carácter que normalmente sería un comodín:

  • Use la palabra clave ESCAPE para definir un carácter de escape. Cuando el carácter de escape se coloca delante del comodín en un patrón, el comodín se interpreta como un carácter. Por ejemplo, para buscar la cadena 5% en cualquier parte de una cadena, use:

    WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
    

    En esta cláusula LIKE, los signos de porcentaje (%) del principio y del final se interpretan como comodines, mientras que el signo de porcentaje precedido de una barra diagonal (/) se interpreta como el carácter %.

  • Use corchetes ([ ]) para incluir el carácter comodín individualmente. Para buscar un guión (-), en lugar de usarlo para especificar un intervalo de búsqueda, use el guión como el primer carácter de un conjunto de corchetes:

    WHERE ColumnA LIKE '9[-]5'
    

    En la siguiente tabla se muestra el uso de comodines incluidos entre corchetes.

    Símbolo

    Significado

    LIKE ‘5[%]’

    5%

    LIKE ‘5%’

    5 seguido de cualquier cadena de 0 o más caracteres

    LIKE ‘[_]n’

    _n

    LIKE '_n'

    en, in, un (etc.)

    LIKE ‘[a-cdf]’

    a, b, c, d o f

    LIKE ‘[-acdf]’

    -, a, c, d o f

    LIKE ‘[ [ ]’

    [

    LIKE ']'

    ]

Cuando realice comparaciones de cadenas con LIKE, todos los caracteres de la cadena patrón son significativos, incluido cada espacio en blanco inicial y final. Si se solicita una comparación que devuelva todas las filas con una cadena LIKE 'abc ' (abc seguido de un espacio), no se devuelve una fila en la que el valor de esa columna sea abc (abc sin un espacio). Lo contrario, sin embargo, no es verdad. Los espacios en blanco finales de la expresión con la que se compara el patrón se omiten. Si se solicita una comparación para que devuelva todas las filas con una cadena LIKE 'abc' (abc sin un espacio), se devolverán todas las filas que comiencen con abc y tengan cero o más espacios finales en blanco.