Compartilhar via


CHARINDEX (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Ponto de extremidade de análise de SQL no Microsoft FabricDepósito no Microsoft FabricBanco de dados SQL no Microsoft Fabric

Essa função pesquisa uma expressão de caractere dentro de uma segunda expressão de caractere, retornando a posição inicial da primeira expressão, se localizada.

Convenções de sintaxe de Transact-SQL

Sintaxe

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Argumentos

expressionToFind

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

expressionToSearch

Uma expressão de caractere a ser pesquisada.

start_location

Uma expressão integer ou bigint em que a pesquisa inicia. Se start_location não for especificado, tiver um valor negativo ou tiver um valor zero (0), a pesquisa será iniciada no início da expressionToSearch.

Tipos de retorno

bigint se expressionToSearch tiver um tipo de dados nvarchar (max) , varbinary (max) ou varchar (max) ; int caso contrário.

Comentários

Se a expressão expressionToFind ou expressionToSearch tiver um tipo de dados Unicode (nchar ou nvarchar) e a outra expressão não o fizer, a CHARINDEX função converterá 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 dentro de expressionToSearch, CHARINDEX retornará 0.

CHARINDEX executa comparações com base na ordenação de entrada. Para executar uma comparação em uma ordenação especificada, use COLLATE para aplicar uma ordenação explícita à entrada.

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

0x0000 (char(0)) é um caractere indefinido em ordenações do Windows e não pode ser incluído em CHARINDEX.

Caracteres suplementares (pares substitutos)

Ao usar ordenações de caractere suplementar (SC), start_location e o valor retornado contam pares alternativos como um caractere, não dois. Para obter mais informações, consulte o suporte a Ordenação e Unicode.

Exemplos

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

Este exemplo pesquisa bicycle na variável de valor de cadeia de caracteres pesquisada @document.

DECLARE @document AS VARCHAR (64);

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

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

Veja a seguir o conjunto de resultados.

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

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

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

DECLARE @document AS VARCHAR (64);

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

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

Veja a seguir o conjunto de resultados.

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

C. Pesquisar uma expressão inexistente

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

DECLARE @document AS VARCHAR (64);

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

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

Veja a seguir o conjunto de resultados.

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

Este exemplo mostra uma pesquisa que diferencia maiúsculas de minúsculas para a cadeia de caracteres TEST na cadeia de caracteres de 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);

Veja a seguir o conjunto de resultados.

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

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

USE tempdb;
GO

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

Veja a seguir 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 na cadeia de caracteres This is a Testpesquisada.

USE tempdb;
GO

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

Veja a seguir o conjunto de resultados.

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

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

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 na cadeia de caracteres This is a string, começando da posição 1 (o primeiro caractere) de This is a string.

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

Veja a seguir o conjunto de resultados.

---------
3

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

Este exemplo retorna o primeiro local da cadeia de caracteres is na cadeia de caracteres This is a string começando a pesquisa da posição 4 (o quarto caractere).

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

Veja a seguir o conjunto de resultados.

---------
 6

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

Este exemplo mostra o valor retornado 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;

Veja a seguir o conjunto de resultados.

---------
0