Voltar para a lista de artigos Artigos
5 minutos de leitura

Como remover caracteres de lixo em SQL

Os caracteres indesejados nos dados de texto podem ser um pouco chatos, mas há uma maneira fácil de consertá-los. Role para baixo para aprender como remover caracteres indesejados em SQL da maneira mais fácil!

Às vezes, encontraremos caracteres indesejados dentro de nossos dados de string porque nossas consultas SQL não funcionaram como esperado. Além disso, estes caracteres extras podem às vezes ser invisíveis, o que realmente complica as coisas. Neste artigo, vamos examinar algumas funções SQL relacionadas a strings que podem lidar com caracteres indesejados visíveis ou não!

A importância da padronização de strings em seu banco de dados

Quando trabalhamos com dados povoados ou carregados como texto livre, a qualidade dos dados é muitas vezes bastante ruim. Caracteres indesejados podem prejudicar seriamente a qualidade de seus dados e tornar mais difícil a análise das informações coletadas. Assim, é importante entender como você pode usar as funções de string SQL para corrigir estes problemas comuns para que você possa limpar seu banco de dados.

Como remover caracteres de lixo em SQL? Comecemos explorando as funções de aparo e comprimento SQL.

Resolução de problemas com funções de SQL String

Para explicar como resolver problemas com caracteres indesejados, trabalharemos com um simples banco de dados de cuidados de saúde. Imagine que temos um médico que armazena todos os dados de seus pacientes em uma única tabela. A tabela contém o nome completo do paciente, a data da visita, o diagnóstico do médico, o tratamento sugerido e quaisquer medicamentos que foram prescritos.

Toda vez que um paciente visita seu consultório, o médico cria um novo registro. Ele digita manualmente suas anotações no banco de dados, de modo que a qualidade dos dados ocasionalmente é ruim.

Full_Name date diagnostic treatment Drugs_in_receipt
John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol”
Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol”
Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol”
Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol”
AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin”
Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol”

Funções SQL para remoção de caracteres invisíveis e indesejáveis

Em alguns casos, uma cadeia de texto pode ter caracteres indesejados, tais como espaços em branco, aspas, vírgulas, ou mesmo "|" separadores. Estes podem estar em um ou ambos os lados da cadeia de caracteres. Podemos remover esses caracteres indesejados usando as funções SQL TRIM, SQL LTRIM, e SQL RTRIM. Eles são muito semelhantes e estão explicados na tabela a seguir:

Function Parameters Behavior
LTRIM A string and a specific character Removes the specified character from the left side only
RTRIM A string and a specific character Removes the specified character from the right side only
TRIM A string and a specific character Removes the specified character from both sides

Vamos tentar estas funções, começando com LENGTH. Como remover caracteres indesejados em SQL usando-as?

Se você examinar a tabela original, você notará que algumas entradas sob a coluna de diagnóstico têm alguns caracteres indesejados, tais como espaços desnecessários no início. Mas também há alguns espaços escondidos após cada entrada. Para corrigir isso, começaremos contando o número de caracteres nas cadeias de diagnóstico usando a função LENGTH. Como os espaços em branco não são caracteres visíveis, usamos colchetes angulares para nos mostrar onde estão os espaços extras (se houver).

Vamos ver como a função SQL LENGTH funciona nesta consulta:

SELECT 	diagnostic as real_diagnostic,
	 	length(diagnostic) as field_length,
		'<' || diagnostic || '>' as delimited_diagnostic
FROM patient_data 
real_diagnostic field_length delimited_diagnostic
Flu 3 <Flu>
Food Poisoning 14 <Food Poisoning>
flu 4 < flu>
Food Poisoned 15 < Food Poisoned>
angina 6 <angina>
Flu 4 < Flu>

Podemos ver que vários registros têm caracteres indesejados, ou seja, espaços desnecessários. Para "gripe", o comprimento é 4 ao invés de 3, e o campo delimitado mostra o espaço em branco no início. Uma consulta adequada corrigirá este problema e removerá o espaço desnecessário. Vamos em frente e vamos fazer isso agora!

SELECT	diagnostic as real_diagnostic, 	
		trim(diagnostic) as trimmed_diagnostic
FROM patient_data 
real_diagnostic trimmed_diagnostic
Flu Flu
Food Poisoning Food Poisoning
flu flu
Food Poisoned Food Poisoned
angina angina
Flu Flu

Cordas de força: Funções de cordas SQL aninhadas

Vamos supor que nosso médico queira saber quantos pacientes foram diagnosticados com cada uma das doenças na coluna diagnostic. Usaríamos a seguinte consulta para obter esta informação:

SELECT diagnostic, count(*)
FROM  patient_data
GROUP BY diagnostic
diagnostic count(*)
Flu 1
Food Poisoning 1
flu 1
food poisoning 1
angina 1
Flu 1

Como podemos ver, o resultado não é o que esperávamos. A mesma doença está aparecendo várias vezes porque o médico não foi consistente com sua digitação. Um diagnóstico de gripe aparece como "gripe", "gripe", e "gripe". Sabemos que eles são os mesmos, mas o motor do banco de dados os vê como três coisas diferentes.

Temos as habilidades para corrigir esta consulta e obter o resultado que queremos. Podemos usar a mesma expressão aninhada para nos livrarmos dos caracteres indesejados (espaços extras) e eliminar os erros de capitalização. Eis como ela se apresenta:

SELECT lower(trim(diagnostic)), count(*)
FROM  patient_data
GROUP BY lower(trim(diagnostic))
diagnostic count(*)
flu 3
food poisoning 2
angina 1

Na programação, é realmente comum aninhar funções, ou chamar uma função de dentro de outra função para ser usada como parâmetro. Isto é o que fizemos no exemplo anterior.

Saiba mais sobre as funções SQL String

Neste artigo, cobrimos as importantes funções de string SQL TRIM e LENGTH para aprender como remover caracteres de lixo em SQL. Se você quiser detectar caracteres ocultos ou indesejados como parte de um diagnóstico inicial, use LENGTH. Depois, use TRIM para se livrar de caracteres indesejados. Também discutimos como você pode aninhar funções SQL, que é uma técnica poderosa na programação.

Se você estiver ansioso para aprender mais sobre as funções das strings SQL, verifique nosso Funções Comuns em SQL curso. Experimente-o gratuitamente hoje mesmo!