CHARINDEX (Transact-SQL)

Busca el valor expression2 de expression1 y devuelve su posición inicial si se localiza. La búsqueda se inicia en start_location.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Argumentos

  • expression1
    Es una expresión de caracteres que contiene la secuencia que se va a buscar. expression1 tiene un límite de 8.000 caracteres.

  • expression2
    Es la expresión de caracteres que se va a buscar.

  • start_location
    Es un entero o expresión bigint donde se inicia la búsqueda. Si no se especifica el parámetro start_location o bien es un número negativo o es igual a cero, la búsqueda comienza al principio de expression2.

Tipos de valor devueltos

bigint si expression2 es de tipo varchar(max), nvarchar(max) o varbinary(max); en caso contrario, int.

Notas

Si uno de los parámetros expression1 o expression2 es de tipo de datos Unicode (nvarchar o nchar) y el otro no, la expresión que no sea de tipo Unicode se convierte en Unicode. CHARINDEX no se puede usar con los tipos de datos text, ntext o image.

Si expression1 o expression2 son de tipo NULL, CHARINDEX devuelve NULL cuando el nivel de compatibilidad de la base de datos es 70 o superior. Si el nivel de compatibilidad de la base de datos es 65 o inferior, CHARINDEX devuelve NULL sólo cuando los dos parámetros expression1 y expression2 son NULL.

Si expression1 no se encuentra en expression2, CHARINDEX devuelve 0.

CHARINDEX realiza comparaciones basadas en la intercalación de la entrada. Para realizar una comparación de una intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la entrada.

La posición inicial devuelta es de base 1, no de base 0.

Ejemplos

El siguiente ejemplo devuelve la posición en la que empieza la secuencia de caracteres bicycle en la columna DocumentSummary de la tabla Document.

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO

Éste es el conjunto de resultados.

----------- 
48          

En el siguiente ejemplo se utiliza el parámetro opcional start_location para empezar la búsqueda de vital en el quinto carácter de la columna DocumentSummary.

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('vital', @document, 5)
GO

Éste es el conjunto de resultados.

----------- 
16          

(1 row(s) affected)

En el siguiente ejemplo se muestra el conjunto de resultados cuando el parámetro expression1 no se encuentra en expression2.

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bike', @document)
GO

Éste es el conjunto de resultados.

----------- 
0          

(1 row(s) affected)

En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena 'TEST' en 'Das jst ein Test'.

USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

Éste es el conjunto de resultados.

----------- 
0          

En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena 'Test' en 'Das jst ein Test'.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

Éste es el conjunto de resultados.

----------- 
13          

En el siguiente ejemplo se realiza una búsqueda sin distinción entre mayúsculas y minúsculas de la cadena 'TEST' en 'Das jst ein Test'.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

Éste es el conjunto de resultados.

----------- 
13