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.