CHARINDEX (Transact-SQL)

Pesquisa expression2 pela expression1 e retorna sua posição inicial, se for localizada. A pesquisa inicia em start_location.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Argumentos

  • expression1
    É uma expressão de caractere que contém a seqüê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 usado com tipos de dados text, ntext e 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 efetuar 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.

Exemplos

O exemplo a seguir retorna a posição na qual a seqüê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

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

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

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)

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)

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

Conjunto de resultados.

----------- 
13