¿Cómo buscar una subcadena en una cadena en SQL Server con la función CHARINDEX?

En este tutorial, aprenderá a usar la función CHARINDEX()
de SQL Server para buscar una subcadena en una cadena.
Descripción general de la función CHARINDEX() de SQL Server
La función CHARINDEX()
de SQL Server busca una subcadena dentro de una cadena a partir de una ubicación especificada. Devuelve la posición de la subcadena encontrada en la cadena buscada, o cero si no se encuentra la subcadena. La posición inicial devuelta se basa en 1, no en 0. Si lo que deseas es obtener una subcadena de una cadena se utiliza la función SUBSTRING().
A continuación, se muestra la sintaxis de la función CHARINDEX()
:
CHARINDEX(substring, string [, start_location])
- substring es la subcadena a buscar. Su longitud está limitada a 8,000 caracteres.
- string puede ser una cadena literal, expresión o columna. Es una cadena para buscar.
- start_location es la ubicación en la que comienza la búsqueda. Start_location es un entero o una expresión que se evalúa como un valor de esos tipos de datos.
El parámetro start_location es opcional. Si se omite, se establece cero o valor negativo, la búsqueda comienza al inicio de la cadena.
Tenga en cuenta que la función CHARINDEX()
puede realizar búsquedas sensibles a mayúsculas y minúsculas en función de la clasificación especificada.
Ejemplos de la función CHARINDEX() de SQL Server
Veamos algunos ejemplos del uso de la función CHARINDEX()
.
A) Usar CHARINDEX() para realizar una sola búsqueda
El siguiente ejemplo utiliza la función CHARINDEX()
para realizar una búsqueda simple de la cadena 'SQL' en el 'SQL Server CHARINDEX Estrada Web Group'
SELECT
CHARINDEX('SQL', 'SQL Server CHARINDEX Estrada Web Group') position;
Resultado:
Position
-----------
1
(1 row affected)
B) Uso de la función CHARINDEX () para realizar una búsqueda que no distingue entre mayúsculas y minúsculas
Esta declaración muestra una búsqueda que no distingue entre mayúsculas y minúsculas para la cadena 'SERVER' en 'SQL Server CHARINDEX Estrada Web Group ':
SELECT
CHARINDEX(
'SERVER',
'SQL Server CHARINDEX Estrada Web Group'
) position;
Resultado:
Position
-----------
5
(1 row affected)
C) Uso de la función CHARINDEX() para realizar una búsqueda sensible a mayúsculas y minúsculas
El siguiente ejemplo muestra una búsqueda que distingue entre mayúsculas y minúsculas para la cadena 'SERVER' en la cadena buscada 'SQL Server CHARINDEX Estrada Web Group'.
SELECT
CHARINDEX(
'SERVER',
'SQL Server CHARINDEX Estrada Web Group'
COLLATE Latin1_General_CS_AS
) position;
Resultado:
Position
-----------
0
(1 row affected)
D) Usar la función CHARINDEX() para buscar una subcadena inexistente
El siguiente ejemplo ilustra una búsqueda de la subcadena 'aguja' en la cadena 'Esto es un pajar'
DECLARE @cadena VARCHAR(100);
SELECT @cadena = 'Esto es un pajar';
SELECT CHARINDEX('aguja', @cadena);
Resultado
Position
-----------
0
(1 row affected)
E) Uso de la función CHARINDEX() para buscar desde una posición específica
Este ejemplo usa el parámetro start_location para comenzar la búsqueda de 'en' en el 3 y el 10 carácter de la cadena 'Aprende SQL en Estrada Web Group':
SELECT
CHARINDEX('en','Aprende SQL en Estrada Web Group',3) start_at_fifth,
CHARINDEX('en','Aprende SQL en Estrada Web Group',10) start_at_tenth;
Resultado:
start_at_fifth start_at_tenth
-------------- --------------
6 15
(1 row affected)
En este tutorial, ha aprendido cómo usar la función CHARINDEX()
de SQL Server para buscar una subcadena en una cadena que comience desde una ubicación especificada y devolver la posición de la subcadena.