Dividir texto delimitado en líneas con SQL Server STRING_SPLIT

La funcionalidad para dividir texto delimitado en diferentes líneas está disponible de forma nativa desde SQL Server 2016 en adelante.

Para dividir texto delimitado en varias líneas con SQL Server, he estado utilizando funciones definidas por el usuario de T-SQL durante años antes de que saliera la versión de SQL Server 2016. De hecho, a partir de SQL Server 2016 una nueva función integrada permite esta característica. Es la función STRING_SPLIT de T-SQL.

1. Valores simples separados por comas con STRING_SPLIT

Para este primer ejemplo, un caso de uso común para STRING_SPLIT es dividir una cadena de valores separados por comas (CSV) en filas individuales.

SELECT value
FROM STRING_SPLIT('Manzana,Naranja,Plátano,Uvas,Mango', ','); 

-- Usa el segundo ejemplo para renombrar la columna
SELECT value as Fruta
FROM STRING_SPLIT('Manzana,Naranja,Plátano,Uvas,Mango', ','); 
Divide un texto delimitado por separador en varias líneas con SQL Server STRING_SPLIT
Divide un texto delimitado por separador en varias líneas con SQL Server STRING_SPLIT

2. Analizar texto con separador de punto y coma en líneas con SQL Server

Otra aplicación práctica es dividir una cadena de correos electrónicos separados por punto y coma en filas individuales.

SELECT value as [Correo electrónico]
FROM STRING_SPLIT('ejemplo1@email.com;ejemplo2@email.com;ejemplo3@email.com', ';')

Esto devolverá una tabla donde cada fila contiene una única dirección de correo electrónico de la cadena original.

3. Dividir una cadena de una variable en varias filas con T-SQL

En este tercer ejemplo, utilizamos ciudades. El objetivo es lograr el mismo resultado pero utilizando variables para almacenar la cadena y el separador. El código es más flexible y podría manejar datos provenientes de una tabla, por ejemplo.

-- Declaración de variables
DECLARE 
@String nvarchar(max), 
@Separator char(1);

-- Inicialización de la cadena y el Separador
SET @String = 'Nueva York;Los Ángeles;Chicago;Houston;Phoenix;Filadelfia;San Antonio;San Diego;Dallas;San José';
SET @Separator = ';';

-- Usa la función de dividir cadena aquí en lugar de la solución XML
SELECT @String = STRING_SPLIT ( @String , @Separator );

Acerca de la función STRING_SPLIT de T-SQL

La función STRING_SPLIT en T-SQL es una herramienta poderosa para la manipulación de texto, permitiendo de dividir texto delimitado en líneas con SQL Server. Ya sea manejando datos CSV o analizando cadenas complejas, STRING_SPLIT proporciona una solución sencilla para convertir texto delimitado en líneas separadas. Su simplicidad y eficacia la hacen una característica esencial para desarrolladores y administradores de bases de datos que se ocupan de tareas de procesamiento de texto y transformación de datos.

Dividir una cadena con delimitadores en múltiples columnas

¿Qué pasa si necesitas almacenar cada valor en una columna separada, por ejemplo, para preparar la importación de archivos csv con un encabezado? Aquí hay otro tutorial con un ejemplo de cómo seleccionar cada valor de la variable @String en columnas dedicadas separadas. Tutorial completo sobre cómo Dividir texto delimitado en columnas en SQL Server.

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*