Compartir a través de


CHARINDEX (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

Esta función busca una expresión de caracteres dentro de una segunda expresión de caracteres, y devuelve la posición inicial de la primera expresión si se encuentra.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Argumentos

expressionToFind

Una expresión de caracteres que contiene la secuencia que se va a buscar. expressionToFind tiene un límite de 8000 caracteres.

expressionToSearch

Una expresión de caracteres que se va a buscar.

start_location

Una expresión integer o bigint donde empieza la búsqueda. Si no se especifica start_location, tiene un valor negativo o tiene un valor cero (0), la búsqueda comienza al principio de expressionToSearch.

Tipos de valores devueltos

bigint si expressionToSearch tiene el tipo de datos nvarchar(max) , varbinary(max) o varchar(max) ; int en caso contrario.

Observaciones

Si la expresión expressionToFind o expressionToSearch tiene un tipo de datos Unicode (nchar o nvarchar) y la otra expresión no, la CHARINDEX función convierte esa otra expresión en un tipo de datos Unicode. CHARINDEX no se puede usar con tipos de datos image, ntext ni text .

Si la expresión expressionToFind o expressionToSearch tiene un NULL valor, CHARINDEX devuelve NULL.

Si CHARINDEX no encuentra expressionToFind en expressionToSearch, CHARINDEX devuelve 0.

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

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

0x0000 (char(0)) es un carácter indefinido en intercalaciones de Windows y no se puede incluir en CHARINDEX.

Caracteres adicionales (pares suplentes)

Al usar intercalaciones de caracteres adicionales (SC), tanto start_location como pares suplentes de recuento de valores devueltos como un carácter, no dos. Para obtener más información, consulte Compatibilidad con intercalación y Unicode.

Ejemplos

A. Devolver la posición inicial de una expresión

Este ejemplo se busca bicycle en la variable de valor de cadena de búsqueda @document.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bicycle', @document);
GO

Este es el conjunto de resultados.

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

B. Buscar desde una posición específica

En este ejemplo se usa el parámetro opcional ubicación_inicial para empezar la búsqueda de vital en el quinto carácter de la variable de valor de cadena de búsqueda @document.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('vital', @document, 5);
GO

Este es el conjunto de resultados.

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

C. Buscar una expresión inexistente

En este ejemplo se muestra el conjunto de resultados cuando CHARINDEX no encuentra expressionToFind dentro de expressionToSearch.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bike', @document);
GO

Este es el conjunto de resultados.

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

En este ejemplo se muestra una búsqueda con distinción de mayúsculas y minúsculas de la cadena TEST en la cadena de búsqueda This is a Test.

USE tempdb;
GO

--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);

Este es el conjunto de resultados.

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

En este ejemplo se muestra una búsqueda con distinción de mayúsculas y minúsculas de la cadena Test en la cadena de búsqueda This is a Test.

USE tempdb;
GO

SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);

Este es el conjunto de resultados.

-----------
11

En este ejemplo se muestra una búsqueda sin distinción entre mayúsculas y minúsculas de la cadena en la cadena TESTThis is a Testen la que se ha buscado .

USE tempdb;
GO

SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO

Este es el conjunto de resultados.

-----------
11

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

F. Buscar desde el principio de una expresión de cadena

En este ejemplo se devuelve la primera ubicación de la cadena is en la cadena This is a string, empezando por la posición 1 (el primer carácter) de This is a string.

SELECT CHARINDEX('is', 'This is a string');

Este es el conjunto de resultados.

---------
3

G. Buscar desde una posición distinta de la primera posición

En este ejemplo se devuelve la primera ubicación de la cadena is en la cadena This is a string, empezando por la posición 4 (el cuarto carácter).

SELECT CHARINDEX('is', 'This is a string', 4);

Este es el conjunto de resultados.

---------
 6

H. Resultados cuando no se encuentra la cadena

En este ejemplo se muestra el valor devuelto cuando CHARINDEX no encuentra la cadena string_pattern en la cadena buscada.

SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;

Este es el conjunto de resultados.

---------
0