Volver a la lista de artículos Artículos
Lectura de 5 minutos

Cómo eliminar los caracteres basura en SQL

Los caracteres no deseados en los datos de texto pueden ser un poco molestos, pero hay una manera fácil de solucionarlos. Desplácese hacia abajo para aprender a eliminar los caracteres no deseados en SQL de la manera más fácil.

A veces, encontraremos caracteres no deseados dentro de nuestros datos de cadena porque nuestras consultas SQL no han funcionado como se esperaba. Además, estos caracteres extra pueden ser a veces invisibles, lo que realmente complica las cosas. En este artículo, examinaremos algunas funciones SQL relacionadas con las cadenas que pueden manejar caracteres no deseados, visibles o no.

La Importancia de Estandarizar las Cadenas en su Base de Datos

Cuando trabajamos con datos poblados o cargados como texto libre, la calidad de los datos suele ser bastante pobre. Los caracteres no deseados pueden perjudicar seriamente la calidad de los datos y dificultar el análisis de la información recopilada. Por lo tanto, es importante entender cómo puede utilizar las funciones de cadena de SQL para solucionar estos problemas comunes y así poder limpiar su base de datos.

¿Cómo eliminar los caracteres basura en SQL? Empecemos por explorar las funciones de recorte y longitud de SQL.

Solución de problemas con funciones de cadena SQL

Para explicar cómo resolver los problemas con los caracteres no deseados, trabajaremos con una simple base de datos de atención médica. Imaginemos que tenemos un médico que almacena todos los datos de sus pacientes en una única tabla. La tabla contiene el nombre completo del paciente, la fecha de la visita, el diagnóstico del médico, el tratamiento sugerido y los fármacos recetados.

Cada vez que un paciente visita su consulta, el médico crea un nuevo registro. Escribe manualmente sus notas en la base de datos, por lo que la calidad de los datos es a veces deficiente.

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”

Funciones SQL para eliminar caracteres invisibles y no deseados

En algunos casos, una cadena de texto puede tener caracteres no deseados, como espacios en blanco, comillas, comas o incluso separadores "|". Estos pueden estar en cualquiera o en ambos lados de la cadena. Podemos eliminar esos caracteres no deseados utilizando las funciones SQL TRIM, SQL LTRIM, y SQL RTRIM. Son muy similares y se explican en la siguiente tabla:

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

Probemos estas funciones, empezando por LENGTH. ¿Cómo eliminar los caracteres basura en SQL utilizándolas?

Si examina la tabla original, se dará cuenta de que algunas entradas de la columna de diagnóstico tienen algunos caracteres no deseados, como espacios innecesarios al principio. Pero también hay algunos espacios ocultos después de cada entrada. Para solucionarlo, empezaremos por contar el número de caracteres de las cadenas de diagnóstico utilizando la función LENGTH. Como los espacios en blanco no son caracteres visibles, utilizamos paréntesis angulares para mostrarnos dónde están los espacios extra (si los hay).

Veamos cómo funciona la función SQL LENGTH en esta 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 varios registros tienen caracteres no deseados, es decir, espacios innecesarios. En el caso de " flu", la longitud es de 4 en lugar de 3, y el campo delimitado muestra el espacio en blanco al principio. Una consulta adecuada solucionará este problema y eliminará el espacio innecesario. ¡Hagámoslo ahora!

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

Cadenas de Poder: Funciones de cadena SQL anidadas

Supongamos que nuestro médico quiere saber cuántos pacientes fueron diagnosticados con cada una de las enfermedades en la columna diagnostic. Utilizaríamos la siguiente consulta para obtener esta información:

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, el resultado no es el esperado. La misma enfermedad aparece varias veces porque el médico no fue coherente con su tipificación. Un diagnóstico de gripe aparece como "gripe", "gripe" y "gripe". Sabemos que son lo mismo, pero el motor de la base de datos los ve como tres cosas diferentes.

Tenemos la habilidad de arreglar esta consulta y obtener el resultado que queremos. Podemos utilizar la misma expresión anidada para deshacernos de los caracteres no deseados (espacios extra) y eliminar los errores de mayúsculas. Esto es lo que parece:

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

En programación, es muy común anidar funciones, o llamar a una función desde dentro de otra función para usarla como parámetro. Esto es lo que hicimos en el ejemplo anterior.

Aprenda más sobre las funciones de cadena SQL

En este artículo, cubrimos las importantes funciones de cadena SQL TRIM y LENGTH para aprender a eliminar los caracteres basura en SQL. Si desea detectar caracteres ocultos o no deseados como parte de un diagnóstico inicial, utilice LENGTH. A continuación, utilice TRIM para deshacerse de los caracteres no deseados. También discutimos cómo puede anidar funciones SQL, que es una técnica poderosa en la programación.

Si quieres aprender más sobre las funciones de cadena SQL, consulta nuestro curso Funciones estándar de SQL . ¡Pruébalo gratis hoy mismo!