CHARINDEX (Transact-SQL)CHARINDEX (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

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.This function searches for one character expression inside a second character expression, returning the starting position of the first expression if found.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

ArgumentosArguments

expressionToFindexpressionToFind
Uma expressão de caractere que contém a sequência a localizar.A character expression containing the sequence to find. expressionToFind tem um limite de 8.000 caracteres.expressionToFind has an 8000 character limit.

expressionToSearchexpressionToSearch
Uma expressão de caractere a ser pesquisada.A character expression to search.

start_locationstart_location
Uma expressão integer ou bigint em que a pesquisa inicia.An integer or bigint expression at which the search starts. Se start_location não for especificado, tiver um valor negativo ou for um valor zero (0), a pesquisa começará no início de expressionToSearch.If start_location is not specified, has a negative value, or has a zero (0) value, the search starts at the beginning of expressionToSearch.

Tipos de retornoReturn types

bigint se expressionToSearch tiver um tipo de dados nvarchar (max) , varbinary (max) ou varchar (max) ; int caso contrário.bigint if expressionToSearch has an nvarchar(max), varbinary(max), or varchar(max) data type; int otherwise.

RemarksRemarks

Se a expressão expressionToFind ou expressionToSearch tiver um tipo de dados Unicode (nchar ou nvarchar) e o outra expressão não, a função CHARINDEX converterá essa outra expressão em um tipo de dados Unicode.If either the expressionToFind or expressionToSearch expression has a Unicode data type (nchar or nvarchar), and the other expression does not, the CHARINDEX function converts that other expression to a Unicode data type. CHARINDEX não pode ser usado com os tipos de dados image, ntext ou text.CHARINDEX cannot be used with image, ntext, or text data types.

Se a expressão expressionToFind ou expressionToSearch tiver um valor NULL, CHARINDEX retornará NULL.If either the expressionToFind or expressionToSearch expression has a NULL value, CHARINDEX returns NULL.

Se CHARINDEX não encontrar expressionToFind em expressionToSearch, CHARINDEX retornará 0.If CHARINDEX does not find expressionToFind within expressionToSearch, CHARINDEX returns 0.

CHARINDEX efetua comparações com base na ordenação de entrada.CHARINDEX performs comparisons based on the input collation. Para fazer uma comparação em uma ordenação especificada, use COLLATE para aplicar uma ordenação explícita à entrada.To perform a comparison in a specified collation, use COLLATE to apply an explicit collation to the input.

A posição inicial retornada é com base em 1, não com base em 0.The starting position returned is 1-based, not 0-based.

0x0000 (char(0) ) é um caractere indefinido em ordenações do Windows e não pode ser incluído em CHARINDEX.0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in CHARINDEX.

Caracteres suplementares (pares substitutos)Supplementary Characters (Surrogate Pairs)

Ao usar ordenações de SC, start_location e o valor retornado contam pares substitutos como um caractere, e não dois.When using SC collations, both start_location and the return value count surrogate pairs as one character, not two. Para obter mais informações, consulte Suporte a ordenações e a Unicode.For more information, see Collation and Unicode Support.

ExemplosExamples

A.A. Retornando a posição inicial de uma expressãoReturning the starting position of an expression

Este exemplo pesquisa bicycle na variável de valor de cadeia de caracteres pesquisada @document.This example searches for bicycle in the searched string value variable @document.

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

Aqui está o conjunto de resultados.Here is the result set.

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

B.B. Pesquisando em uma posição específicaSearching from a specific position

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.This example uses the optional start_location parameter to start the search for vital at the fifth character of the searched string value variable @document.

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

Aqui está o conjunto de resultados.Here is the result set.

-----------   
16            
  
(1 row(s) affected)  

C.C. Pesquisando uma expressão inexistenteSearching for a nonexistent expression

Este exemplo mostra o conjunto de resultados quando CHARINDEX não localiza expressionToFind em expressionToSearch.This example shows the result set when CHARINDEX does not find expressionToFind within expressionToSearch.

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

Aqui está o conjunto de resultados.Here is the result set.

-----------
0
  
(1 row(s) affected)

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``'.This example shows a case-sensitive search for the string 'TEST' in searched string '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.Here is the result set.

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

Este exemplo mostra uma pesquisa que diferencia maiúsculas de minúsculas para a cadeia de caracteres 'Test' em 'This is a Test'.This example shows a case-sensitive search for the string 'Test' in '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.Here is the result set.

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

Este exemplo mostra uma pesquisa que não diferencia maiúsculas de minúsculas para a cadeia de caracteres 'TEST' em 'This is a Test'.This example shows a case-insensitive search for the string 'TEST' in '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.Here is the result set.

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

Exemplos: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) e Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) and Parallel Data WarehouseParallel Data Warehouse

F.F. Pesquisar desde o início de uma expressão de cadeia de caracteresSearching from the start of a string expression

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.This example returns the first location of the string is in string This is a string, starting from position 1 (the first character) of This is a string.

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

Aqui está o conjunto de resultados.Here is the result set.

---------
3

G.G. Busca de uma posição que não a primeiraSearching from a position other than the first position

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).This example returns the first location of the string is in string This is a string, starting the search from position 4 (the fourth character).

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

Aqui está o conjunto de resultados.Here is the result set.

---------
 6

H.H. Resulta quando a cadeia de caracteres não é encontradaResults when the string is not found

Este exemplo mostra o valor retornado quando CHARINDEX não encontra a cadeia de caracteres string_pattern na cadeia de caracteres pesquisada.This example shows the return value when CHARINDEX does not find string string_pattern in the searched string.

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

Aqui está o conjunto de resultados.Here is the result set.

---------
0

Confira tambémSee also

LEN (Transact-SQL)LEN (Transact-SQL)
PATINDEX (Transact-SQL)PATINDEX (Transact-SQL)
Funções de cadeia de caracteres (Transact-SQL)String Functions (Transact-SQL)
+ (Concatenação de cadeias de caracteres) (Transact-SQL)+ (String Concatenation) (Transact-SQL)
Suporte a ordenações e a UnicodeCollation and Unicode Support