20th Jul 2022 Lectura de 5 minutos Cómo eliminar los caracteres basura en SQL Ignacio L. Bisso errores comunes en SQL calidad de los datos cómo en SQL princípios básicos de SQL Índice La Importancia de Estandarizar las Cadenas en su Base de Datos Solución de problemas con funciones de cadena SQL Funciones SQL para eliminar caracteres invisibles y no deseados Cadenas de Poder: Funciones de cadena SQL anidadas Aprenda más sobre las funciones de cadena 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! Tags: errores comunes en SQL calidad de los datos cómo en SQL princípios básicos de SQL