En este artículo, aprenderemos a usar el operador TIPO SQL, en SQL Server, utilizando expresiones regulares para buscar y/o manipular texto. Comenzaremos aprendiendo los símbolos y la sintaxis básica del uso de expresiones regulares comodín. Usaremos conjuntos de caracteres y expresiones de repetición para crear patrones de coincidencia flexibles, y en el camino, examinaremos diferentes formas de usar el operador LIKE. Y, finalmente, en la última parte de la sección, exploraremos algunos de los ejemplos de expresiones regulares más comunes y útiles.
SQL es el lenguaje más utilizado para trabajar con bases de datos. Cuando diseña un informe o utiliza BI o cualquier herramienta de informes, es casi seguro que el software está creando una consulta SQL entre bastidores que se ejecuta en la base de datos y devuelve los datos seleccionados. Cuando buscamos datos específicos o los datos que se ajustan a criterios específicos, la cláusula where proporciona el conjunto de herramientas que necesita. Esto da una opción para consultar filas específicas que estamos buscando en lugar de toda la tabla.
Requisitos previos
Descargue la base de datos AdventureWorks2014 aquí para probar las siguientes muestras de T-SQL.
Primeros pasos
Veamos las instrucciones SQL utilizando la palabra clave LIKE y los caracteres comodín. Por lo tanto, comencemos a aprender sobre el operador TIPO SQL.
Usando ejemplos de caracteres comodín TIPO SQL
Las expresiones regulares son patrones para describir cómo hacer coincidir cadenas en una cláusula WHERE. Muchos lenguajes de programación admiten expresiones regulares que utilizan una sintaxis ligeramente diferente de la que se usa con el operador LIKE. En este artículo, cuando nos referimos a expresiones regulares, nos referimos a los patrones utilizados con el operador SQL LIKE
La siguiente tabla incluye los cuatro caracteres comodín diferentes. También puede consultar el artículo Funciones de cadena SQL para el análisis de datos (Organización) para obtener más ejemplos.
caracteres Comodín |
Descripción |
% |
Cualquier cadena de cero o más caracteres en el patrón de búsqueda |
Cualquier carácter individual de búsqueda con el patrón especificado |
|
Cualquier carácter individual de búsqueda dentro de la gama especificada |
|
Cualquier carácter individual de búsqueda no dentro del rango especificado |
el Uso de SQL COMO con ‘%’ carácter comodín
El siguiente La instrucción SQL devuelve todas las filas de la tabla de personas donde su apellido comienza con la letra A. Especifiquemos la letra ‘A’, el primer carácter que debe estar en la cadena y luego utilicemos el comodín’%’, el porcentaje.
1
2
3
|
SELECT TOP 10 *
DE la Persona.Persona
DONDE el nombre COMO ‘ A%’;
|
Verá la salida que enumera las 10 filas superiores de la tabla de personas donde el nombre comienza con A y el resto del carácter es desconocido.
Usando SQL COMO con el carácter comodín ‘ _ ‘
El comodín, subrayado, es para hacer coincidir cualquier carácter individual. La siguiente instrucción SQL encuentra todos los números de teléfono que tienen un código de área que comienza por 7 y termina en 8 en la columna número de teléfono. También hemos incluido el carácter comodín % al final del patrón de búsqueda, ya que no nos preocupa el resto de los valores de cadena.
1
2
3
4
5
6
7
|
SELECCIONE p.Nombre,
p.Apellidos,
del número de Teléfono
DE la Persona.PersonPhone COMO ph
Persona DE UNIÓN INTERNA.Persona COMO p EN ph. BusinessEntityID = p.BusinessEntityID
DONDE ph. PhoneNumber COMO ‘7_8%’
ORDER BY p. LastName;
|
La salida muestra que el código de área de ese inicio con 7 y termina con 8 está listado.
El uso de SQL con caracteres comodín
Los corchetes, por ejemplo, nos permiten identificar varios caracteres individuales que estarían en esa posición particular. Por ejemplo, digamos que enumeramos todas las filas donde el tercer carácter de los nombres comienza con I o K. En lugar de escribir múltiples condiciones SIMILARES, podemos colocar el conjunto de coincidencia de patrones en la tercera posición y cerrarlo en el cuadrado. El motor de consultas primero busca ‘ I ‘y luego busca ‘K’.
Vamos a ejecutar la siguiente instrucción SQL
1
2
3
4
5
6
7
|
SELECCIONE p.Nombre,
p.Apellido,
Número de teléfono
DE Persona.PersonPhone COMO ph
Persona DE UNIÓN INTERNA.Persona COMO p EN ph.BusinessEntityID = p. BusinessEntityID
DONDE ph.Número de teléfono COMO ‘7_8%’ y p. apellido como ‘Ba%’
ORDENAR POR p. Apellido;
|
La consulta anterior se puede reescribir usando O condición. Es más como una condición de quirófano.
1
2
3
4
5
6
7
|
SELECCIONE p.Nombre,
p.Apellidos,
del número de Teléfono
DE la Persona.PersonPhone COMO ph
Persona DE UNIÓN INTERNA.Persona COMO p EN ph. BusinessEntityID = p. BusinessEntityID
DONDE el ph. Número de teléfono COMO ‘7_8%’ y (p. apellido como ‘Bai%’ o p.apellido como ‘Bak%’)
ORDER BY p. Apellido;
|
En la salida, podemos ver que se enumeran los apellidos donde el tercer carácter es ‘I’ o ‘k’
Usando SQL LIKE con el carácter comodín ‘ ^ ‘
La siguiente instrucción SQL muestra todas las filas que no tienen la letra que comienza con A a D en el primer carácter de su apellido. Para ello, coloque el carácter de tilde en la primera posición del patrón. Se convierte en el NO prerrequisito.
1
2
3
4
5
|
SELECCIONE p.Nombre,
p.Apellido
DE la Persona.Persona p
DONDE apellido COMO ‘ % ‘
ORDENAR POR p. apellido;
|
Ahora, si ejecuto la consulta anterior, veremos que todos los nombres que vienen de atrás no tiene una a, B, C o D, como en su primer carácter.
Usando SQL NO como con los caracteres comodín
La siguiente instrucción SQL encuentra todas las personas donde la columna de nombre tiene más de 3 caracteres.
1
2
3
4
|
SELECT DISTINCT
nombre
DE la Persona.Persona
DONDE el nombre NO ES COMO «;
|
La lista de resultados sólo los nombres donde la longitud del nombre es de más de 3
Utilizando SQL COMO con la cláusula de ESCAPE
En la siguiente instrucción SQL, la cláusula de ESCAPE se utiliza para evitar el carácter ‘!’para negar el significado de ‘%’ para encontrar la cadena «100% Gratis» en la columna col1 de la tabla temporal.
1
2
3
4
5
6
7
8
9
10
11
12
|
DROP TABLE IF EXISTS temp;
CREATE TABLE temp(col1 VARCHAR(100));
GO
INSERT INTO temp
VALUES(‘ApexSQL Refactor is 100% Free SQL Formatter tool’), (‘ApexSQL Job is 10-15% off today only’);
IR
SELECT *
TEMP;
SELECT *
temp
DONDE col1 LIKE ‘%100!% Gratis % ‘ESCAPE’!’;
IR
|
La lista de resultados sólo aquellos valores donde el patrón de búsqueda ‘100% Libre’ coincide con la col1 expresión.
Usando SQL LIKE con la instrucción CASE
La siguiente instrucción SQL extrae todos los empleados que tienen un número de teléfono formateado como tres, tres, cuatro dígitos con guiones intermedios (999-999-9999). El patrón se compara con la columna de números de teléfono para derivar las categorías nacionales o internacionales.
La expresión case se evalúa para el patrón específico para derivar el tipo de categoría de teléfono.
1
2
3
4
5
6
7
8
9
|
SELECCIONE p.Nombre,
p.Apellidos,
Número
CASO CUANDO el ph.Número de teléfono COMO ‘–‘ entonces ‘Doméstica Número de Teléfono’
ELSE ‘número de Teléfono Internacional’
INDIA del número de Teléfono
DE la Persona.PersonPhone COMO ph
Persona DE UNIÓN INTERNA.Persona COMO p EN el ph.Contactid = p.Contactid
ORDER BY p.LastName;
|
En la salida, podemos ver el número está clasificado como nacional o internacional. La columna de número de teléfono se evalúa con el operador LIKE utilizando el corchete cuadrado. El número de cero a nueve en la primera posición de caracteres se evalúa para que coincida con el patrón de cero a nueve, cualquier número de cero a nueve en la segunda posición de caracteres y la tercera y luego la cuarta posición de caracteres debe ser un guión y se aplica una lógica similar al resto de los caracteres.
Usando SQL LIKE con SQL dinámico
La siguiente instrucción SQL devuelve todos los empleados donde el apellido coincide con la lengüeta del patrón. El patrón se crea dinámicamente y se compara con la expresión.
1
2
3
4
5
6
7
|
INDICANDO @ELastName VARCHAR(20)= ‘Púa’;
SELECCIONE p.Nombre,
p.Apellidos,
el.Ciudad
DE la Persona.Persona p
ÚNASE A la Persona.Dirígete al ON p. BusinessEntityID = ‘s. AddressId
DONDE p. ApelLido COMO’ %’ + @ELastName+’%’;
|
La lista de salida de las filas coincidentes para el patrón especificado Barb
Nota: de forma predeterminada, CHAR inyecta final en blanco, dependiendo de la longitud del campo. Utilice RTRIM para suprimir los espacios en blanco finales, si está utilizando el tipo de datos char.
En la siguiente instrucción SQL, el campo @ eLastName es de tipo de datos char. Puede ver un uso de la función RTRIM para recortar los espacios en blanco finales.
1
2
3
4
5
6
7
|
INDICANDO @ELastName CHAR(20)= ‘Púa’;
SELECCIONE p.Nombre,
p.Apellidos,
el.Ciudad
DE la Persona.Persona p
ÚNASE A la Persona.Dirígete a ON p. BusinessEntityID = ‘s. AddressId
DONDE p. Apellido COMO’ % ‘ +RTRIM (@ELastName)+’%’;
|
Usando SQL Like con una instrucción IF
La siguiente instrucción SQL, el valor de entrada se evalúa para el patrón específico en la cláusula condition utilizando la instrucción IF.
1
2
3
4
5
|
DECLARE @RuleName de tipo NVARCHAR(MAX)= ‘SQL Sever 2019 CTP está disponible para la vista previa’;
SI @nombre_rule COMO ‘SQL Sever % CTP está disponible para previsualización’
IMPRIMIR ‘ entrada válida buena!’;
ELSE
PRINT ‘no válido buena!’;
|
La cadena de entrada se evalúa patrones específicos utilizando SQL como comodín de la expresión y devuelve válido de cadena de entrada.
Eso es todo por ahora!
Resumen
Hasta ahora, hemos discutido varios consejos y cuatro comodines diferentes ( % ,_,, y ^] que están disponibles con el operador SQL LIKE. Es una gran técnica de búsqueda para emparejar cadenas de caracteres con los patrones especificados o donde no estamos muy seguros de lo que estás buscando, también conocido como búsqueda borrosa. Los caracteres comodín disponibles hacen que el operador LIKE sea más flexible. Espero que haya disfrutado de este artículo sobre el operador SQL LIKE en SQL Server. No dude en hacer cualquier pregunta en los comentarios a continuación.
- Autor
- mensajes Recientes
Mi especialidad es diseñar & implementar soluciones de alta disponibilidad y migración de bases de datos multiplataforma. Las tecnologías en las que se trabaja actualmente son SQL Server, PowerShell, Oracle y MongoDB.Ver todas las publicaciones de Prashanth Jayaram
- Una visión general rápida de la auditoría de base de datos en SQL – 28 de enero de 2021
- subir Sincronización de datos de Azure entre bases de datos SQL de Azure y SQL Server local-20 de enero de 2021
- Cómo realizar operaciones de importación/exportación de bases de datos SQL de Azure con PowerShell – 14 de enero de 2021