CHARINDEX (Transact-SQL)
Pesquisa uma expressão para outra e retorna sua posição inicial, se for localizada.
Convenções de sintaxe Transact-SQL
Sintaxe
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
Argumentos
expressionToFind
É uma expressão de caractere que contém a sequência a ser localizada. expressionToFind é limitado a 8000 caracteres.expressionToSearch
É uma expressão de caractere a ser pesquisada.start_location
É um inteiro ou expressão integer ou bigint em que a pesquisa inicia. Se start_location não for especificado, for um número negativo ou 0, a pesquisa começará no início da expressionToSearch.
Tipos de retorno
bigint se expressionToSearch for dos tipos de dados varchar(max), nvarchar(max) ou varbinary(max); caso contrário, int.
Comentários
Se expressionToFind ou expressionToSearch for de um tipo de dados Unicode (nvarchar ou nchar) e a outra não for, a outra será convertida em um tipo de dados Unicode. CHARINDEX não pode ser usado com tipos de dados text, ntext e image.
Se expressionToFind ou expressionToSearch é o NULL, CHARINDEX retorna o NULL.
Se expressionToFind não for localizada em expressionToSearch, CHARINDEX retornará 0.
CHARINDEX efetua comparações com base no agrupamento da entrada. Para executar uma comparação em um agrupamento especificado, é possível usar COLLATE para aplicar um agrupamento explícito à entrada.
A posição inicial retornada é com base em 1, não com base em 0.
0x0000 (char(0)) é um caractere indefinido em agrupamentos do Windows e não pode ser incluído em CHARINDEX.
Caracteres suplementares (pares substitutos)
Ao usar agrupamentos de SC, start_location e o valor de retorno contam pares substitutos como um caractere, não dois. Para obter mais informações, consulte Suporte a agrupamentos e a Unicode.
Exemplos
A.Retornando a posição inicial de uma expressão
O exemplo a seguir retorna a posição na qual a sequência de caracteres bicycle inicia na coluna DocumentSummary da tabela Document.
USE AdventureWorks2012;
GO
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.
-----------
48
B.Pesquisando em uma posição específica
O exemplo a seguir usa o parâmetro opcional start_location para iniciar a procura por vital no quinto caractere da coluna DocumentSummary.
USE AdventureWorks2012;
GO
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.
-----------
16
(1 row(s) affected)
C.Pesquisando uma expressão inexistente
O exemplo a seguir mostra o conjunto de resultados quando expressionToFind não é localizado em expressionToSearch.
USE AdventureWorks2012;
GO
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.
-----------
0
(1 row(s) affected)
D.Executando uma pesquisa com diferenciação de maiúsculas e minúsculas
O exemplo a seguir executa uma pesquisa que diferencia maiúsculas e minúsculas para a cadeia de caracteres 'TEST' em 'Das ist ein Test'.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS);
Aqui está o conjunto de resultados.
-----------
0
O exemplo a seguir executa uma pesquisa que diferencia maiúsculas e minúsculas para a cadeia de caracteres 'Test' em 'Das ist ein Test'.
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS);
Aqui está o conjunto de resultados.
-----------
13
E.Executando uma pesquisa sem diferenciação de maiúsculas e minúsculas
O exemplo a seguir executa uma pesquisa que não diferencia maiúsculas e minúsculas para a cadeia de caracteres 'TEST' em 'Das ist ein Test'.
USE tempdb;
GO
SELECT CHARINDEX ( 'TEST',
'Das ist ein Test'
COLLATE Latin1_General_CI_AS)
GO
Aqui está o conjunto de resultados.
-----------
13
Consulte também
Referência
Funções de cadeia de caracteres (Transact-SQL)
+ (Concatenação de cadeias de caracteres) (Transact-SQL)