La mejor manera de aprender algo es volver a visitar algunos de los blogs más antiguos y luego buscar una manera más eficiente de trabajar en el mismo problema. Recientemente estaba mirando en los foros para encontrar una pregunta vienen una y otra vez en torno a hacer una lista separada por comas. Esto no es nuevo sobre este blog y si usted busca obtendrá unos cuantos. Hace mucho tiempo he escrito los siguientes blogs para mostrar los valores almacenados en la tabla como una lista separada por comas – esto no es un refrito de lo que fue escrito antes, pero una nueva forma de resolver el problema de nuevo.

SQL SERVER – Creando una lista de valores separados por comas desde la tabla – UDF – SP
SQL SERVER – Valores separados por comas (CSV) desde la columna de la tabla

Recientemente alguien me preguntó lo contrario. Estaban almacenando valores separados por comas en una columna de tabla. Esta tabla estaba siendo poblada desde alguna fuente a través del paquete SSIS. Aquí está la versión simplificada del problema que me presentaron.

DECLARE @t TABLE(EmployeeID INT,Certs VARCHAR(8000))INSERT @t VALUES (1,'B.E.,MCA, MCDBA, PGDCA'), (2,'M.Com.,B.Sc.'), (3,'M.Sc.,M.Tech.')

Así es como se ven los datos en la tabla.

SQL SERVER - Split Comma Separated List Without Using a Function csv-split-01

SQL SERVER - Split Comma Separated List Without Using a Function csv-split-01

Con los datos anteriores disponibles, quieren que se divida en valores individuales. Buscando posibles soluciones, esta es la consulta de solución que se me ocurrió:

SELECT EmployeeID,LTRIM(RTRIM(m.n.value('.','varchar(8000)'))) AS CertsFROM(SELECT EmployeeID,CAST('<XMLRoot><RowData>' + REPLACE(Certs,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS xFROM @t)tCROSS APPLY x.nodes('/XMLRoot/RowData')m(n)


El resultado es como el siguiente.

SQL SERVER - Split Comma Separated List Without Using a Function csv-split-02

SQL SERVER - Split Comma Separated List Without Using a Function csv-split-02

Espero que esto te ayude en tu proyecto. Hazme saber si eres capaz de encontrar una solución diferente al mismo problema. La mejor manera de aprender es aprender de los demás.

Categorías: Articles

0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *