Published on

May 1, 2019

Compreendendo a Função SQL CHARINDEX no SQL Server

A função SQL CHARINDEX é uma ferramenta poderosa que nos permite encontrar a posição de uma substring ou expressão dentro de uma determinada string. É comumente usada no SQL Server para buscar caracteres ou substrings específicas em dados de texto.

A sintaxe da função SQL CHARINDEX é a seguinte:

CHARINDEX(expressão_a_encontrar, expressão_a_pesquisar [, posição_inicial])

A função recebe três parâmetros:

  • expressão_a_encontrar: Este parâmetro especifica o caractere ou string que queremos buscar dentro de outra string.
  • expressão_a_pesquisar: Este parâmetro especifica a string na qual queremos buscar a expressão_a_encontrar.
  • posição_inicial: Este é um parâmetro opcional que nos permite especificar a posição inicial para a busca. Se não for especificado, a busca começa a partir do início da string.

Vamos ver alguns exemplos para entender como a função SQL CHARINDEX funciona:

Exemplo 1: Encontrando a Posição de um Caractere em uma String

Neste exemplo, queremos encontrar a posição do caractere ‘@’ no endereço de e-mail ‘rajendra.gupta16@gmail.com’.

SELECT CHARINDEX('@', 'rajendra.gupta16@gmail.com') AS PosiçãoDoCaractere;

A saída desta consulta será a posição do caractere ‘@’, que é 17.

Exemplo 2: Usando o Parâmetro posição_inicial

Também podemos especificar um parâmetro posição_inicial para iniciar a busca a partir de uma posição específica na string. Neste exemplo, queremos encontrar a posição do caractere ‘.’ no endereço de e-mail, começando a partir da posição 11.

SELECT CHARINDEX('.', 'rajendra.gupta16@gmail.com', 11) AS PosiçãoDoCaractere;

A saída desta consulta será a posição do caractere ‘.’, que é 23. A busca começa a partir da posição 11 e para assim que encontra uma correspondência.

Exemplo 3: Buscando uma Substring

Além de buscar caracteres individuais, também podemos buscar substrings dentro de uma string. Neste exemplo, queremos buscar a substring ‘Rajendra’ na string ‘Explore SQL Server no SQLShack com artigos de Rajendra Gupta’.

DECLARE @ExpressãoAPesquisar VARCHAR(100);
SET @ExpressãoAPesquisar = 'Explore SQL Server no SQLShack com artigos de Rajendra Gupta';
SELECT CHARINDEX('Rajendra', @ExpressãoAPesquisar) AS PosiçãoDaSubstring;

A saída desta consulta será a posição inicial da substring ‘Rajendra’, que é 32. Se a substring não for encontrada, a função retorna 0.

Exemplo 4: Lidando com Múltiplas Substrings Correspondentes

Em alguns casos, podemos ter múltiplas substrings correspondentes dentro de uma string. Neste exemplo, queremos buscar a substring ‘SQLShack’ na string ‘Explore SQL Server no SQLShack com artigos de Rajendra Gupta – SQLShack’.

DECLARE @ExpressãoAPesquisar VARCHAR(100);
SET @ExpressãoAPesquisar = 'Explore SQL Server no SQLShack com artigos de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('SQLShack', @ExpressãoAPesquisar) AS PosiçãoDaSubstring;

A saída desta consulta será a posição inicial da primeira ocorrência da substring ‘SQLShack’, que é 24. Se quisermos iniciar a busca a partir de uma posição específica, podemos usar o parâmetro posição_inicial.

Exemplo 5: Usando SQL CHARINDEX com a Declaração SQL CASE

Podemos usar a função SQL CHARINDEX em conjunto com a declaração SQL CASE para verificar a existência de uma substring específica em uma string. Neste exemplo, queremos verificar se a substring ‘SQLShack’ existe na string ‘Explore SQL Server com artigos no SQLShack’.

DECLARE @Nome AS VARCHAR(100) = 'Explore SQL Server com artigos no SQLShack';
SELECT CASE WHEN CHARINDEX('SQLShack', @Nome) > 0 THEN 'Existe' ELSE 'Não Existe' END AS EncontrarSubstring;

A saída desta consulta será ‘Existe’ se a substring ‘SQLShack’ for encontrada na string, e ‘Não Existe’ caso contrário.

Exemplo 6: Realizando uma Busca Sensível a Maiúsculas e Minúsculas

Por padrão, a função SQL CHARINDEX realiza uma busca insensível a maiúsculas e minúsculas. No entanto, podemos usar a colação para realizar uma busca sensível a maiúsculas e minúsculas. Neste exemplo, queremos buscar a substring ‘sqlshack’ na string ‘Explore SQL Server no SQLSHACK com artigos de Rajendra Gupta – SQLShack’.

DECLARE @ExpressãoAPesquisar VARCHAR(100);
SET @ExpressãoAPesquisar = 'Explore SQL Server no SQLSHACK com artigos de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('sqlshack', @ExpressãoAPesquisar) AS PosiçãoDaSubstring;

A saída desta consulta será a posição inicial da substring ‘sqlshack’, que é 24. Mesmo que a caixa da substring não corresponda exatamente, a função ainda retorna a saída correta. Para realizar uma busca sensível a maiúsculas e minúsculas, podemos usar a cláusula COLLATE com uma colação específica.

Exemplo 7: Usando SQL CHARINDEX com Coluna de Tabela

Também podemos usar a função SQL CHARINDEX para buscar substrings específicas dentro de dados armazenados em uma tabela. Neste exemplo, queremos verificar a posição do caractere ‘R’ na coluna ‘NomeEmp’ da tabela ‘Funcionário’.

SELECT TOP 10 [NomeEmp], CHARINDEX('R', nomeemp) AS "Posição do R", [Cidade], [Cargo]
FROM [SQLShackDemo].[dbo].[Funcionário];

A saída desta consulta incluirá uma nova coluna que mostra a posição do caractere ‘R’ na coluna ‘NomeEmp’. Se o ‘NomeEmp’ não contiver o caractere especificado, a função retorna 0.

Esses são apenas alguns exemplos de como a função SQL CHARINDEX pode ser usada no SQL Server. É uma função versátil que pode ser usada para buscar caracteres ou substrings específicas dentro de strings, tanto em consultas individuais quanto em colunas de tabelas.

Em conclusão, a função SQL CHARINDEX é uma ferramenta valiosa para buscar e manipular dados de texto no SQL Server. Ela nos permite encontrar a posição de caracteres ou substrings dentro de strings, e pode ser usada em uma variedade de cenários. Compreender como usar essa função de forma eficaz pode melhorar significativamente nossas habilidades no SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.