Trabajar con bases de datos relacionales a menudo implica manejar datos desordenados. Uno de los retos más comunes es la limpieza y el tratamiento de los datos de texto. Por suerte, SQL proporciona potentes funciones de cadena que pueden hacer este proceso mucho más eficiente, ahorrándote tiempo y esfuerzo.
En este artículo, vamos a explorar las funciones de cadena SQL más importantes que pueden ayudarte a limpiar y manipular datos de texto con facilidad. ¡Empecemos!
¿Qué son las funciones de cadena SQL?
Las Funciones de Cadena SQL son funciones incorporadas que nos permiten manipular y procesar datos de texto almacenados en una base de datos. Algunos ejemplos habituales de campos de texto son los nombres, las descripciones y las direcciones.
Estas funciones pueden utilizarse para realizar una amplia gama de tareas, entre ellas:
Concatenar cadenas
Formatear texto
Extracción de partes de una cadena
Buscar y sustituir un texto específico dentro de una cadena
Concatenar cadenas en SQL
Podemos concatenar dos o más cadenas utilizando la función concat():
SELECT CONCAT('Street Roma',', ','72',', ','Padova')AS full_addressCon la tecnología de
Este es el resultado:
full_address |-----------------------+
Street Roma,72, Padova|Con la tecnología de
Esta función se utiliza mucho para combinar información proporcionada por distintas columnas, como nombres y direcciones.
Como alternativa, también puedes utilizar la funciónCONCAT_WS():
SELECT CONCAT_WS(',','Street Roma','72','Padova')as full_addressCon la tecnología de
Por la sintaxis, puedes observar que es más fácil y eficaz en situaciones en las que quieras combinar más de dos columnas con el mismo separador.
Formatear texto
Se trata de varias funciones de cadena SQL para ajustar el texto cambiando las mayúsculas y minúsculas, eliminando los espacios sobrantes y otras operaciones. Cada función se enumera con su sintaxis y la descripción correspondiente.
Sintaxis de la función
Descripción
LOWER(cadena)
Devuelve el texto con todos los caracteres en minúsculas
SUPERIOR(cadena)
Devuelve el texto con todos los caracteres en mayúsculas
TRIM(cadena, [carácter])
Elimina los espacios en blanco de los lados izquierdo y derecho de la cadena por defecto, carácter especial si se especifica
LTRIM(string, [character])
Elimina los espacios en blanco de la izquierda de la cadena por defecto, carácter especial si se especifica
RTRIM(string, [character])
Elimina los espacios en blanco de la derecha de la cadena por defecto, carácter especial si se especifica
Ahora, vamos a mostrar algunos ejemplos para entender cómo aplicar estas funciones. Imagina un caso en el que tienes direcciones de correo electrónico con caracteres en mayúsculas y las siglas del estado en minúsculas, y quieres cambiar para corregir el formato de estas columnas.
email |country|-------------------+-------+
anonymous@gmail.com|IT |Con la tecnología de
Además de cambiar las mayúsculas y minúsculas, también puede ser útil eliminar los espacios en blanco al principio o al final de las cadenas. La función principal de este tipo de operación esTRIM()eliminar de ambos lados. Otras alternativas sonLTRIM() y RTRIM()para eliminar los espacios en blanco de los lados izquierdo y derecho respectivamente:
SELECT TRIM(' Street Roma, 72 ')AS trimmed_address,
LTRIM(' Street Roma, 72 ')AS ltrimmed_address,
RTRIM(' Street Roma, 72 ')AS rtrimmed_addressCon la tecnología de
La consulta devuelve el siguiente resultado:
trimmed_address|ltrimmed_address|rtrimmed_address|---------------+----------------+----------------+
Street Roma,72|Street Roma,72| Street Roma,72|Con la tecnología de
A partir de la salida, puedes captar las diferencias entre cada función. Además, se puede aplicar TRIM() para eliminar otros caracteres especiales, además de los espacios en blanco. Por ejemplo, queremos limpiar el campo del teléfono deshaciéndonos del signo +:
Como puedes ver, el número de teléfono está completamente limpio.
Extraer texto
Después de concatenar y modificar el formato de las cadenas, es hora de descubrir cómo extraer texto utilizando la función especial de SQL SUBSTRING(). Vamos a mostrar distintos ejemplos para dominar esta función:
SELECT
SUBSTRING('Antony',1,1)AS first_character,
SUBSTRING('Antony',1,3)AS first_3characters,
SUBSTRING('Antony',1,5)AS first_5charactersCon la tecnología de
Este es el resultado:
first_character|first_3characters|first_5characters|---------------+-----------------+-----------------+
A |Ant |Anton |Con la tecnología de
También podemos combinar esta función con las anteriores para poner en mayúsculas el primer carácter, convertir el resto de letras a minúsculas y, después, concatenar todas las letras:
SELECT
LENGTH('antony')AS lenght_name,
SUBSTRING(UPPER('antony'),1,1)AS first_character,
SUBSTRING(LOWER('antony'),2,LENGTH('antony'))AS last_characters,
CONCAT(SUBSTRING(UPPER('antony'),1,1),SUBSTRING(LOWER('antony'),2,LENGTH('antony')))AS nameCon la tecnología de
Esta consulta devuelve el siguiente resultado:
lenght_name|first_character|LAST_characters|name |-----------+---------------+---------------+------+6|A |ntony |Antony|Con la tecnología de
Además de las funciones vistas hasta ahora, puedes fijarte en la función LENGTH() que ayuda a extraer la longitud de la cadena. En este contexto, es útil especificar el índice del último carácter.
Buscar y reemplazar cadenas en SQL
Podemos mostrar las principales funciones para buscar y sustituir cadenas:
Sintaxis de la función
Descripción
REEMPLAZAR(cadena,x,y)
Sustituye el valor x de la cadena por el valor y
CHARINDEX(x,cadena)
Busca la posición del valor x dentro de la cadena
Una función muy útil es REPLACE() para sustituir una subcadena por otra subcadena dentro de la cadena:
SELECT'Street Roma - 32'AS address,replace('Street Roma - 32','-',',')AS cleaned_addressCon la tecnología de
Este es el resultado:
address |cleaned_address |----------------+----------------+
Street Roma -32|Street Roma ,32|Con la tecnología de
En este caso, acabamos de sustituir un guión por una coma dentro de la dirección. También podemos intentar encontrar la posición del guión dentro de la dirección:
SELECT'Street Roma - 32'AS address,
LENGTH('Street Roma - 32')AS length_address,
CHARINDEX('-','Street Roma - 32')AS location_dashCon la tecnología de
La consulta devuelve el siguiente resultado:
address |length_address|location_dash|----------------+--------------+-------------+
Street Roma -32|16|13|Con la tecnología de
Podemos observar que el símbolo - está en la posición 13 de la dirección, casi al final de la cadena.
Conclusión
Dominar estas funciones de cadena SQL puede marcar la diferencia a la hora de limpiar los datos con eficacia. Por supuesto, el artículo no cubre todas las funciones, sino sólo una breve lista de las más importantes. No todas las funciones SQL son siempre válidas y pueden cambiar según el tipo de base de datos que utilices. Por ejemplo, CHARINDEX puede sustituirse por LOCATE() en una base de datos MySQL.
Para practicar con estas funciones, puedes consultar nuestro Informes en SQL en SQL. Puede ayudarte a convertirte en un experto en limpieza de datos y elaboración de informes complejos. También recomendamos el Fundamentos de SQL para cubrir todos los aspectos esenciales de SQL.
Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Utiliza LIKE para filtrar registros SQL según coincidencias de cadenas específicas. Este tutorial te enseña a utilizar comodines, NOT, LOWER, UPPER y CASE WHEN con LIKE.
Domina los fundamentos de SQL necesarios para los negocios, aprende a escribir consultas SQL y empieza a analizar tus datos utilizando este potente lenguaje.
Trabajar con bases de datos relacionales a menudo implica manejar datos desordenados. Uno de los retos más comunes es la limpieza y el tratamiento de los datos de texto. Por suerte, SQL proporciona potentes funciones de cadena que pueden hacer este proceso mucho más eficiente, ahorrándote tiempo y esfuerzo.
En este artículo, vamos a explorar las funciones de cadena SQL más importantes que pueden ayudarte a limpiar y manipular datos de texto con facilidad. ¡Empecemos!
¿Qué son las funciones de cadena SQL?
Las Funciones de Cadena SQL son funciones incorporadas que nos permiten manipular y procesar datos de texto almacenados en una base de datos. Algunos ejemplos habituales de campos de texto son los nombres, las descripciones y las direcciones.
Estas funciones pueden utilizarse para realizar una amplia gama de tareas, entre ellas:
Concatenar cadenas en SQL
Podemos concatenar dos o más cadenas utilizando la función
concat():Este es el resultado:
Esta función se utiliza mucho para combinar información proporcionada por distintas columnas, como nombres y direcciones.
Como alternativa, también puedes utilizar la función
CONCAT_WS():Por la sintaxis, puedes observar que es más fácil y eficaz en situaciones en las que quieras combinar más de dos columnas con el mismo separador.
Formatear texto
Se trata de varias funciones de cadena SQL para ajustar el texto cambiando las mayúsculas y minúsculas, eliminando los espacios sobrantes y otras operaciones. Cada función se enumera con su sintaxis y la descripción correspondiente.
Sintaxis de la función
Descripción
Devuelve el texto con todos los caracteres en minúsculas
Devuelve el texto con todos los caracteres en mayúsculas
Elimina los espacios en blanco de los lados izquierdo y derecho de la cadena por defecto, carácter especial si se especifica
Elimina los espacios en blanco de la izquierda de la cadena por defecto, carácter especial si se especifica
Elimina los espacios en blanco de la derecha de la cadena por defecto, carácter especial si se especifica
Ahora, vamos a mostrar algunos ejemplos para entender cómo aplicar estas funciones. Imagina un caso en el que tienes direcciones de correo electrónico con caracteres en mayúsculas y las siglas del estado en minúsculas, y quieres cambiar para corregir el formato de estas columnas.
El resultado es el siguiente:
Además de cambiar las mayúsculas y minúsculas, también puede ser útil eliminar los espacios en blanco al principio o al final de las cadenas. La función principal de este tipo de operación es
TRIM()eliminar de ambos lados. Otras alternativas sonLTRIM()yRTRIM()para eliminar los espacios en blanco de los lados izquierdo y derecho respectivamente:La consulta devuelve el siguiente resultado:
A partir de la salida, puedes captar las diferencias entre cada función. Además, se puede aplicar
TRIM()para eliminar otros caracteres especiales, además de los espacios en blanco. Por ejemplo, queremos limpiar el campo del teléfono deshaciéndonos del signo +:La salida devuelta es la siguiente:
Como puedes ver, el número de teléfono está completamente limpio.
Extraer texto
Después de concatenar y modificar el formato de las cadenas, es hora de descubrir cómo extraer texto utilizando la función especial de SQL SUBSTRING(). Vamos a mostrar distintos ejemplos para dominar esta función:
Este es el resultado:
También podemos combinar esta función con las anteriores para poner en mayúsculas el primer carácter, convertir el resto de letras a minúsculas y, después, concatenar todas las letras:
Esta consulta devuelve el siguiente resultado:
Además de las funciones vistas hasta ahora, puedes fijarte en la función
LENGTH()que ayuda a extraer la longitud de la cadena. En este contexto, es útil especificar el índice del último carácter.Buscar y reemplazar cadenas en SQL
Podemos mostrar las principales funciones para buscar y sustituir cadenas:
Sintaxis de la función
Descripción
Sustituye el valor x de la cadena por el valor y
Busca la posición del valor x dentro de la cadena
Una función muy útil es
REPLACE()para sustituir una subcadena por otra subcadena dentro de la cadena:Este es el resultado:
En este caso, acabamos de sustituir un guión por una coma dentro de la dirección. También podemos intentar encontrar la posición del guión dentro de la dirección:
La consulta devuelve el siguiente resultado:
Podemos observar que el símbolo
-está en la posición 13 de la dirección, casi al final de la cadena.Conclusión
Dominar estas funciones de cadena SQL puede marcar la diferencia a la hora de limpiar los datos con eficacia. Por supuesto, el artículo no cubre todas las funciones, sino sólo una breve lista de las más importantes. No todas las funciones SQL son siempre válidas y pueden cambiar según el tipo de base de datos que utilices. Por ejemplo,
CHARINDEXpuede sustituirse porLOCATE()en una base de datos MySQL.Para practicar con estas funciones, puedes consultar nuestro Informes en SQL en SQL. Puede ayudarte a convertirte en un experto en limpieza de datos y elaboración de informes complejos. También recomendamos el Fundamentos de SQL para cubrir todos los aspectos esenciales de SQL.