Published on

May 1, 2019

Comprendiendo la función SQL CHARINDEX en SQL Server

La función SQL CHARINDEX es una herramienta poderosa que nos permite encontrar la posición de una subcadena o expresión dentro de una cadena dada. Se utiliza comúnmente en SQL Server para buscar caracteres o subcadenas específicas en datos de texto.

La sintaxis de la función SQL CHARINDEX es la siguiente:

CHARINDEX(expresión_a_encontrar, expresión_a_buscar [, posición_inicial])

La función toma tres parámetros:

  • expresión_a_encontrar: Este parámetro especifica el carácter o cadena que queremos buscar dentro de otra cadena.
  • expresión_a_buscar: Este parámetro especifica la cadena en la que queremos buscar la expresión_a_encontrar.
  • posición_inicial: Este es un parámetro opcional que nos permite especificar la posición inicial para la búsqueda. Si no se especifica, la búsqueda comienza desde el principio de la cadena.

Veamos algunos ejemplos para entender cómo funciona la función SQL CHARINDEX:

Ejemplo 1: Encontrar la posición de un carácter en una cadena

En este ejemplo, queremos encontrar la posición del carácter ‘@’ en la dirección de correo electrónico ‘rajendra.gupta16@gmail.com’.

SELECT CHARINDEX('@', 'rajendra.gupta16@gmail.com') AS PosiciónDelCarácter;

La salida de esta consulta será la posición del carácter ‘@’, que es 17.

Ejemplo 2: Uso del parámetro posición_inicial

También podemos especificar un parámetro posición_inicial para comenzar la búsqueda desde una posición específica en la cadena. En este ejemplo, queremos encontrar la posición del carácter ‘.’ en la dirección de correo electrónico, comenzando desde la posición 11.

SELECT CHARINDEX('.', 'rajendra.gupta16@gmail.com', 11) AS PosiciónDelCarácter;

La salida de esta consulta será la posición del carácter ‘.’, que es 23. La búsqueda comienza desde la posición 11 y se detiene una vez que encuentra una coincidencia.

Ejemplo 3: Búsqueda de una subcadena

Además de buscar caracteres individuales, también podemos buscar subcadenas dentro de una cadena. En este ejemplo, queremos buscar la subcadena ‘Rajendra’ en la cadena ‘Explorar SQL Server en SQLShack con los artículos de Rajendra Gupta’.

DECLARE @ExpresiónABuscar VARCHAR(100);
SET @ExpresiónABuscar = 'Explorar SQL Server en SQLShack con los artículos de Rajendra Gupta';
SELECT CHARINDEX('Rajendra', @ExpresiónABuscar) AS PosiciónDelCarácter;

La salida de esta consulta será la posición inicial de la subcadena ‘Rajendra’, que es 32. Si no se encuentra la subcadena, la función devuelve 0.

Ejemplo 4: Manejo de múltiples coincidencias de subcadenas

En algunos casos, podemos tener múltiples coincidencias de subcadenas dentro de una cadena. En este ejemplo, queremos buscar la subcadena ‘SQLShack’ en la cadena ‘Explorar SQL Server en SQLShack con los artículos de Rajendra Gupta – SQLShack’.

DECLARE @ExpresiónABuscar VARCHAR(100);
SET @ExpresiónABuscar = 'Explorar SQL Server en SQLShack con los artículos de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('SQLShack', @ExpresiónABuscar) AS PosiciónDelCarácter;

La salida de esta consulta será la posición inicial de la primera aparición de la subcadena ‘SQLShack’, que es 24. Si queremos comenzar la búsqueda desde una posición específica, podemos usar el parámetro posición_inicial.

Ejemplo 5: Uso de SQL CHARINDEX con la sentencia SQL CASE

Podemos usar la función SQL CHARINDEX en conjunto con la sentencia SQL CASE para verificar la existencia de una subcadena específica en una cadena. En este ejemplo, queremos verificar si la subcadena ‘SQLShack’ existe en la cadena ‘Explorar SQL Server con artículos en SQLShack’.

DECLARE @Nombre AS VARCHAR(100) = 'Explorar SQL Server con artículos en SQLShack';
SELECT CASE WHEN CHARINDEX('SQLShack', @Nombre) > 0 THEN 'Existe' ELSE 'No Existe' END AS EncontrarSubcadena;

La salida de esta consulta será ‘Existe’ si se encuentra la subcadena ‘SQLShack’ en la cadena, y ‘No Existe’ en caso contrario.

Ejemplo 6: Realizar una búsqueda sensible a mayúsculas y minúsculas

De forma predeterminada, la función SQL CHARINDEX realiza una búsqueda insensible a mayúsculas y minúsculas. Sin embargo, podemos usar la intercalación para realizar una búsqueda sensible a mayúsculas y minúsculas. En este ejemplo, queremos buscar la subcadena ‘sqlshack’ en la cadena ‘Explorar SQL Server en SQLSHACK con los artículos de Rajendra Gupta – SQLShack’.

DECLARE @ExpresiónABuscar VARCHAR(100);
SET @ExpresiónABuscar = 'Explorar SQL Server en SQLSHACK con los artículos de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('sqlshack', @ExpresiónABuscar) AS PosiciónDelCarácter;

La salida de esta consulta será la posición inicial de la subcadena ‘sqlshack’, que es 24. Aunque la mayúscula y minúscula de la subcadena no coinciden exactamente, la función aún devuelve la salida correcta. Para realizar una búsqueda sensible a mayúsculas y minúsculas, podemos usar la cláusula COLLATE con una intercalación específica.

Ejemplo 7: Uso de SQL CHARINDEX con una columna de tabla

También podemos usar la función SQL CHARINDEX para buscar subcadenas específicas dentro de datos almacenados en una tabla. En este ejemplo, queremos verificar la posición del carácter ‘R’ en la columna ‘EmpName’ de la tabla ‘Employee’.

SELECT TOP 10 [EmpName], CHARINDEX('R', empname) AS "Posición de R", [City], [Designation]
FROM [SQLShackDemo].[dbo].[Employee];

La salida de esta consulta incluirá una nueva columna que muestra la posición del carácter ‘R’ en la columna ‘EmpName’. Si ‘EmpName’ no contiene el carácter especificado, la función devuelve 0.

Estos son solo algunos ejemplos de cómo se puede utilizar la función SQL CHARINDEX en SQL Server. Es una función versátil que se puede utilizar para buscar caracteres o subcadenas específicas dentro de cadenas, tanto en consultas individuales como en columnas de tabla.

En conclusión, la función SQL CHARINDEX es una herramienta valiosa para buscar y manipular datos de texto en SQL Server. Nos permite encontrar la posición de caracteres o subcadenas dentro de cadenas, y se puede utilizar en una variedad de escenarios. Comprender cómo utilizar esta función de manera efectiva puede mejorar en gran medida nuestras habilidades en SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.