Bojan Petrovic

Introducción y resumen del operador lógico SQL Like

May 7, 2019 by

El SQL Like es un tipo de operador lógico que se usa para poder determinar si una cadena de caracteres específica coincide con un patrón específico. Se utiliza normalmente en una sentencia Where para buscar un patrón específico de una columna.

Este operador puede ser de utilidad en los casos donde necesitamos realizar un apareamiento de patrones en vez de iguales o no iguales. El SQL Like se utiliza cuando se desea devolver la fila, si una cadena de caracteres específica coincide con un patrón específico. El patrón puede ser una combinación de caracteres regulares al igual que caracteres de comodín (*,%, ¿, etc.).

Para poder devolver una fila, los caracteres normales se deben hacer coincidir exactamente con los caracteres especificados en la cadena de caracteres. Los caracteres comodín pueden combinarse con partes arbitrarias de la cadena de caracteres.

Utilicemos la base de datos del ejemplo AdventureWorks y veamos algunos de los operadores SQL Like diferentes “%” y “_”. Comodines

Uso del carácter comodín % (representa cero, uno o varios caracteres)

La siguiente consulta retorna todos los números de teléfono cuyo código de área “415” en la tabla “PersonPhone”:

Nótese que el símbolo “415%” se especifica en la cláusula “Where”. Esto significa que SQL Server buscará el número 415 seguido de cualquier cadena de cero o más caracteres. Aquí está el conjunto de resultados:

El operador no lógico invierte el valor de cualquier expresión booleana. Por lo tanto, si simplemente especificamos No como con el carácter comodín “%” en la sentencia SQL Like, agrega una condición adicional y colóquela en la misma declaración anterior, de tal forma que deberíamos obtener una consulta como esta:

En esta ocasión, la consulta devolvió todos los registros de la tabla “PersonPhone” que tienen códigos de área distintos de 415:

Además, supongamos que queremos encontrar todos los registros en los cuales un nombre contiene “ssa” en ellos. Se puede usar la siguiente consulta:

Tenga en cuenta que al usar ‘%’ antes y después de “ssa”, le estamos indicando a SQL Server que busque todos los registros en los que “Person.Person” tenga caracteres “ssa” y no importa qué otros caracteres estén antes y después de “ssa”:

Usando el carácter comodín “_” (representa un solo carácter)

El carácter de subrayado de SQL Like, por ejemplo, se utiliza cuando queremos verificar un solo carácter que puede ser cualquier cosa y proveer el resto de los personajes para nuestro lado.

Supongamos que si deseamos devolver todos los registros en los que el primer carácter de la tabla “Nombre” puede ser cualquier cosa, pero el resto de ellos debe ser “en”. Utilice la siguiente consulta:

Aquí está el conjunto de resultados:

Tome en cuenta que también se debe usar una combinación de caracteres comodín al final del patrón de búsqueda. Por ejemplo, para obtener todos los números de teléfono que tienen un código de área que comienza con el número 6 y termina en 2 en la tabla “PersonPhone”, use la siguiente consulta:

Tome en cuenta que el carácter comodín “%” se utiliza después del carácter de subrayado, ya que el código de área es la primera parte del número de teléfono y existen caracteres adicionales después del valor de la columna:

Usando los corchetes [ ] (cualquier carácter individual dentro del rango especificado [a-t] o en conjunto [abc])

El operador SQL Like con corchetes es utilizado cuando se quiere tener rango. Supongamos que si queremos encontrar todas las filas donde el primer carácter de “Nombre” comienza con [a-f]. Utilice la siguiente consulta:

Como puede verse, hemos utilizado el rango [a-f]%. Eso significa que se debe devolver el primer carácter de “a” a la “f” y después de eso, todos los caracteres están bien porque usamos “%” después:

Para obtener cualquier carácter individual dentro de un conjunto, utilice el siguiente ejemplo para encontrar a los empleados en la tabla de “Persona” con el nombre de Cheryl o Sheryl:

Esta consulta solo retornara a “Cheryl” en este caso, pero habría devuelto a “Sheryl” también si se tuviera algún registro en la base de datos:

A continuación mostramos otro ejemplo cuando actualmente tenemos resultados mixtos:

La consulta previa, muestra los registros de los empleados en la tabla “Persona” con los apellidos de Zheng o Zhang:

Usando corchetes [^] (cualquier carácter individual que no esté dentro del rango especificado [a-t] o en conjunto [abc])

Como habrá adivinado, esto es lo contrario al uso anterior del operador SQL Like entre corchetes. Digamos que queremos obtener todos los registros donde el primer carácter de “Nombre” no comienza con [a a la f]:

Observe que solo retornó los registros que no comienzan con ningún carácter de la “a” a la “f”:

Con el ejemplo del conjunto, supongamos que queremos obtener todos los registros en los cuales el “Nombre” no comienza con a, d, j. entonces podemos utilizar la siguiente consulta:

Aquí se muestra el conjunto de resultados:

Usando la sentencia de Escape

Este es un SQL Like similar al que se utiliza para especificar un carácter de escape. La siguiente consulta utiliza la sentencia de escape y el carácter de escape:

Devuelve la cadena de caracteres exacta de 10-15 % en la columna c1 de la tabla mytbl2:

Espero realmente que este artículo sobre el operador SQL Like haya sido informativo y les agradezco mucho la lectura.


Bojan Petrovic
T-SQL

Acerca de Bojan Petrovic

Bojan aka “Boksi”, an AP graduate in IT Technology focused on Networks and electronic technology from the Copenhagen School of Design and Technology, is a software analyst with experience in quality assurance, software support, product evangelism, and user engagement. He has written extensively on both the SQL Shack and the ApexSQL Solution Center, on topics ranging from client technologies like 4K resolution and theming, error handling to index strategies, and performance monitoring. Bojan works at ApexSQL in Nis, Serbia as an integral part of the team focusing on designing, developing, and testing the next generation of database tools including MySQL and SQL Server, and both stand-alone tools and integrations into Visual Studio, SSMS, and VSCode. View all posts by Bojan Petrovic

168 Views