Uso de la función PATINDEX de SQL Server para encontrar la posición de un patrón en una cadena

Resumen: en este tutorial, aprenderás a usar la función PATINDEX()
de SQL Server para encontrar la posición de un patrón en una cadena.
Introducción general de la función PATINDEX() en SQL Server
La función PATINDEX()
devuelve la posición de la primera aparición de un patrón en una cadena. La sintaxis de la función PATINDEX() es la siguiente:
PATINDEX ( '%pattern%' , input_string )
La función PATINDEX()
acepta dos argumentos:
pattern
es una cadena de caracteres que se buscará. Puede contener caracteres comodines como%
y '_
' en el pattern. Los significados de los comodines son los mismos que se usan con el operador LIKE.input_string
es una cadena de caracteres en la que se busca elpattern
.
PATINDEX()
devuelve un número entero que especifica la posición de la primera aparición del pattern
en input_string
, o cero si no es encontrado el pattern. La función PATINDEX()
devolverá NULL si pattern
o input_string
es NULL.
Ten en cuenta que PATINDEX()
busca el patrón en función de la intercalación de la entrada. Si deseas utilizar una intercalación específica, puedes utilizar la cláusula COLLATE
explícitamente.
Ejemplos de la función PATINDEX() de SQL Server
Veamos algunos ejemplos del uso de la función PATINDEX()
.
A) Función PATINDEX() de SQL Server ejemplo simple
Este ejemplo devuelve la posición inicial de la subcadena 'ern'
en la cadena 'SQL Pattern Index'
:
SELECT
PATINDEX('%ern%', 'SQL Pattern Index') position;
Resultado:
position
-----------
9
(1 row affected)
B) Función PATINDEX() de SQL Server con varios comodines
Este ejemplo utiliza comodines %
y _
para encontrar la posición en la que comienza el patrón 'f'
, seguido de dos caracteres cualesquiera y 'ction'
en la cadena 'SQL Server String Function'
:
SELECT
PATINDEX('%f__ction%', 'SQL Server String Function') position;
Resultado:
Position
-----------
19
(1 row affected)
C) Uso de la función PATINDEX() de SQL Server con ejemplo de columna de tabla
Este ejemplo busca la posición de la primera aparición del patrón 2018
en los valores de la columna product_name
en la tabla production.products
de la base de datos de ejemplo.
SELECT
product_name,
PATINDEX('%2018%', product_name) position
FROM
production.products
WHERE
product_name LIKE '%2018%'
ORDER BY
product_name;
La siguiente imagen muestra el resultado parcial:
En este tutorial, has aprendido a utilizar la función PATINDEX()
de SQL Server para encontrar la posición de la primera aparición de un patrón en una cadena.