SQL

Cómo dividir una cadena de texto separada por comas con STRING_SPLIT de SQL Server

Estrada Web Group
Estrada Web Group
Cómo dividir una cadena de texto separada por comas con STRING_SPLIT de SQL Server

Resumen: en este tutorial, aprenderás a usar la función STRING_SPLIT() de SQL Server para dividir una cadena en una fila de subcadenas en función de un separador específico.

Introducción a la función STRING_SPLIT() de SQL Server

La función STRING_SPLIT() es una función con valores de tabla que divide una cadena en una tabla que consta de filas de subcadenas según un separador especificado.

A continuación se muestra la sintaxis de la función STRING_SPLIT():

STRING_SPLIT ( input_string , separator )  

En esta sintaxis:

  • input_string es una expresión basada en caracteres que se evalúa como una cadena NVARCHAR, VARCHAR, NCHAR o CHAR.
  • separator es un carácter único que se utiliza como separador para dividir.

La función STRING_SPLIT() devuelve una tabla de una sola columna, cuyo nombre de columna es value. Esta tabla de resultados contiene filas que son las subcadenas.

Ten en cuenta que los valores en la columna de value pueden estar en cualquier orden de clasificación. Para obtener el orden esperado, debes agregar la cláusula ORDER BY a la instrucción SELECT:

ORDER BY value [ASC|DESC]

Ejemplos del uso de la función STRING_SPLIT() de SQL Server

Veamos algunos ejemplos del uso de la función STRING_SPLIT().

A) Usar la función STRING_SPLIT() para dividir una cadena de valores separados por comas

Este ejemplo usa la función STRING_SPLIT() para analizar una lista de valores separados por comas:

SELECT
    value  
FROM
    STRING_SPLIT('red,green,,blue', ',');

Resultado:

value
---------------
red
green

blue

(4 rows affected)

La tercera fila está vacía porque la cadena de entrada contiene dos comas consecutivas (,,). Para obtener subcadenas no vacías, agrega una cláusula WHERE a la declaración SELECT como se muestra en la siguiente consulta:

SELECT
    value  
FROM
    STRING_SPLIT('red,green,,blue', ',')
WHERE
    TRIM(value) <> '';

Resultado:

value
---------------
red
green
blue

(3 rows affected)

B) Usar la función STRING_SPLIT() para dividir una cadena separada por comas en una columna

A veces, las tablas de la base de datos no están normalizadas. Un ejemplo típico de esto es cuando una columna puede almacenar múltiples valores separados por una coma (,).

STRING_SPLIT() puedes ayudar a normalizar los datos al dividir estas columnas de valores múltiples.

Preparemos una tabla de muestra para la demostración.

Primero, crea una nueva tabla llamada sales.contacts que almacene información de contacto:

CREATE TABLE sales.contacts (
    id INT PRIMARY KEY IDENTITY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    phones VARCHAR(500)
);

En segundo lugar, inserta algunos contactos en la tabla sales.contacts:

INSERT INTO
    sales.contacts(first_name, last_name, phones)
VALUES
    ('John','Doe','(408)-123-3456,(408)-123-3457'),
    ('Jane','Doe','(408)-987-4321,(408)-987-4322,(408)-987-4323');

Tercero, usa la función STRING_SPLIT() para dividir los números de teléfono y CROSS APPLY para unirlos con la tabla sales.contacts:

SELECT
    first_name,
    last_name,
    value phone
FROM
    sales.contacts
    CROSS APPLY STRING_SPLIT(phones, ',');

Resultado
STRING_SPLIT SQL Server

C) Usar la función STRING_SPLIT() con una función agregada

El siguiente ejemplo devuelve los contactos y el número de teléfonos para cada contacto, para eso se usa CONCAT_WS, COUNT y GROUP BY:

SELECT
    CONCAT_WS(' ',first_name,last_name) full_name,
    COUNT(value) number_of_phones
FROM
    sales.contacts
    CROSS APPLY STRING_SPLIT(phones, ',')
GROUP BY
    CONCAT_WS(' ',first_name,last_name);

Resultado:

función STRING_SPLIT SQL Server

En este tutorial, has aprendido a utilizar la función STRING_SPLIT() para dividir cadenas en una tabla de subcadenas mediante un separador específico.

Compartir artículo:

Más artículos geniales

Tipo de datos DATETIME2 de SQL Server

Tipo de datos DATETIME2 de SQL Server

Resumen: en este tutorial, aprenderás a usar el tipo de datos DATETIME2 de SQL Server para almacenar datos de fecha y hora en una tabla.

Ver artículo completo
Cómo crear los índices únicos de SQL Server con CREATE UNIQUE INDEX

Cómo crear los índices únicos de SQL Server con CREATE UNIQUE INDEX

Resumen: en este tutorial, aprenderás sobre los índices únicos de SQL Server y cómo usarlos para imponer la unicidad de los valores en una o más columnas de una tabla.

Ver artículo completo
Cómo obtener un número de caracteres de la derecha con RIGHT en SQL Server

Cómo obtener un número de caracteres de la derecha con RIGHT en SQL Server

Resumen: en este tutorial, aprenderás a usar la función RIGHT() de SQL Server para extraer una cantidad de caracteres del lado derecho de una cadena de caracteres.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla