CHARINDEX (Transact-SQL)
Pesquisa expression2 pela expression1 e retorna sua posição inicial, se for localizada. A pesquisa inicia em start_location.
Sintaxe
CHARINDEX ( expression1 ,expression2 [ , start_location ] )
Argumentos
expression1
É uma expressão de caractere que contém a sequência a ser localizada. expression1 limita-se a 8000 caracteres.expression2
É uma expressão de caractere a ser pesquisada.start_location
É um inteiro ou expressão 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 expression2.
Tipos de retorno
bigint se expression2 for dos tipos de dados varchar(max), nvarchar(max) ou varbinary(max); caso contrário, int.
Comentários
Se expression1 ou expression2 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 usada com o tipo de dados image.
Se expression1 ou expression2 for NULL, CHARINDEX retornará NULL quando o nível de compatibilidade do banco de dados for 70 ou mais alto. Se o nível de compatibilidade do banco de dados for 65 ou mais baixo, CHARINDEX retornará NULL somente quando expression1 e expression2 forem NULL.
Se expression1 não for localizada em expression2, 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.
Exemplos
O exemplo a seguir retorna a posição na qual a sequência de caracteres bicycle inicia na coluna DocumentSummary da tabela 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.
-----------
48
O exemplo a seguir usa o parâmetro opcional start_location para iniciar a procura por vital no quinto caractere da coluna DocumentSummary.
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)
O exemplo a seguir mostra o conjunto de resultados quando expression1 não é localizada em expression2.
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)
O exemplo a seguir executa uma pesquisa que diferencia maiúsculas e minúsculas para a cadeia de caracteres 'TEST' em 'Das jst 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 jst ein Test'.
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS)
Aqui está o conjunto de resultados.
-----------
13
O exemplo a seguir executa uma pesquisa que não diferencia maiúsculas e minúsculas para a cadeia de caracteres 'TEST' em 'Das jst 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