SQL: Quantas vezes um caractere específico aparece?

Hoje me deparei com uma atividade na qual a solução que eu encontrei envolvia filtrar uma coluna de acordo com o número de vezes que uma determinada letra – um caractere qualquer – aparecia. Por exemplo, suponha que você tenha a coluna ‘NOME’ e você queira filtrar todos os nomes que contém 3 letras A. No meu caso, eu queria contar o número de vezes que aparecia ‘/’. O que eu fiz foi o seguinte:

select *, 
      LEN(coluna_X) - LEN(REPLACE(coluna_X, '/', '')) as conta_barra
from tabela_X
where conta_barra = 1

Veja que simples, eu peguei o comprimento do campo, utilizando a função LEN e subtrai pelo comprimento do campo quando a gente exclui ‘/’.

Reforçando o entendimento das funções acima:

  • LEN: Calcula o comprimento do campo. Se tivermos algo como LEN(‘Brasil’), o SQL retornará 6;
  • REPLACE: Substitui o caracter selecionado, por outro de sua escolha. Se você  fizer REPLACE(‘Brasil’,’a’,’aaa’), o SQL retornará ‘Braaasil’. No nosso exemplo, substituímos ‘/’ por nada, i.e., excluímos o caractere.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *