Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco 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
D. Executar uma pesquisa que diferencia maiúsculas de minúsculas
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
E. Executar uma pesquisa que não diferencia maiúsculas de minúsculas
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