Partilhar via


CHARINDEX (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Esta função procura uma expressão de caractere dentro de uma segunda expressão de caractere, retornando a posição inicial da primeira expressão, se encontrada.

Transact-SQL convenções de sintaxe

Sintaxe

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Arguments

expressionToFind

Uma expressão de caractere que contém a sequência a ser localizada. expressionToFind tem um limite de 8.000 caracteres.

expressionToSearch

Uma expressão de caractere para pesquisar.

start_location

Uma expressão inteira ou bigint na qual a pesquisa é iniciada. Se start_location não for especificado, tiver um valor negativo ou tiver um valor zero (0), a pesquisa começará no início de expressionToSearch.

Tipos de devolução

bigint se expressionToSearch tiver um tipo de dados nvarchar(max), varbinary(max) ou varchar(max ); int de outra forma.

Observações

Se a expressão expressionToFind ou expressionToSearch tiver um tipo de dados Unicode (nchar ou nvarchar) e a outra expressão não, a CHARINDEX função converte essa outra expressão em um tipo de dados Unicode. CHARINDEX não pode ser usado com tipos de dados de imagem, ntext ou texto .

Se a expressão expressionToFind ou expressionToSearch tiver um NULL valor, CHARINDEX retornará NULL.

Se CHARINDEX não encontrar expressionToFind em expressionToSearch, CHARINDEX retornará 0.

CHARINDEX Realiza comparações com base no agrupamento de entrada. Para executar uma comparação em um agrupamento especificado, use COLLATE para aplicar um agrupamento explícito à entrada.

A posição inicial retornada é baseada em 1, não em 0.

0x0000 (char(0)) é um caractere indefinido em agrupamentos do Windows e não pode ser incluído no CHARINDEX.

Caracteres suplementares (pares substitutos)

Ao usar agrupamentos de caracteres suplementares (SC), tanto start_location quanto o valor de retorno contam pares substitutos como um caractere, não dois. Para obter mais informações, consulte Suporte a agrupamento e Unicode.

Examples

Um. Retornar a posição inicial de uma expressão

Este exemplo procura bicycle na variável @documentde valor da cadeia de caracteres pesquisada .

DECLARE @document AS VARCHAR (64);

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

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

Aqui está o conjunto de resultados.

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

B. Pesquisar a partir de uma posição específica

Este exemplo usa o parâmetro start_location opcional para iniciar a pesquisa no vital quinto caractere da variável @documentde valor da cadeia de caracteres pesquisada.

DECLARE @document AS VARCHAR (64);

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

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

Aqui está o conjunto de resultados.

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

C. Procurar uma expressão inexistente

Este exemplo mostra o conjunto de resultados quando CHARINDEX não encontra expressionToFind em expressionToSearch.

DECLARE @document AS VARCHAR (64);

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

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

Aqui está o conjunto de resultados.

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

Este exemplo mostra uma pesquisa que diferencia maiúsculas de minúsculas para a cadeia de caracteres TEST pesquisada This is a Test.

USE tempdb;
GO

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

Aqui está o conjunto de resultados.

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

Este exemplo mostra uma pesquisa que diferencia maiúsculas de minúsculas para a cadeia de caracteres Test pesquisada This is a Test.

USE tempdb;
GO

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

Aqui está o conjunto de resultados.

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

Este exemplo mostra uma pesquisa que não diferencia maiúsculas de minúsculas para a cadeia de caracteres TEST pesquisada This is a Test.

USE tempdb;
GO

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

Aqui está o conjunto de resultados.

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

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

F. Pesquisar desde o início de uma expressão de cadeia de caracteres

Este exemplo retorna o primeiro local da cadeia de caracteres is em string This is a string, começando a partir da posição 1 (o primeiro caractere) de This is a string.

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

Aqui está o conjunto de resultados.

---------
3

G. Pesquisar a partir de uma posição diferente da primeira posição

Este exemplo retorna o primeiro local da cadeia de caracteres is em string This is a string, iniciando a pesquisa a partir da posição 4 (o quarto caractere).

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

Aqui está o conjunto de resultados.

---------
 6

H. Resultados quando a cadeia de caracteres não é encontrada

Este exemplo mostra o valor de retorno quando CHARINDEX não encontra string_pattern de cadeia de caracteres na cadeia de caracteres pesquisada.

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

Aqui está o conjunto de resultados.

---------
0