En esta entrada del blog, aprenderemos sobre la función STRING_SPLIT que se introdujo anteriormente en SQL Server 2016 pero todavía no se adoptó ampliamente en la industria. Aprenderemos hoy cómo dividir la cadena de valores separados por comas en una columna usando STRING_SPLIT.
Por ejemplo, si tienes el siguiente conjunto de resultados y si quieres cada uno de los valores de la cadena separada por comas de la última columna en una fila separada, antes tenías que utilizar una función muy complicada en la columna que era un asesino de rendimiento.
Ahora podemos simplemente la función STRING_SPLIT y puede lograr que muy rápidamente. Entendamos con un ejemplo sencillo.
Primero, creemos un dato de ejemplo.
CREATE TABLE StudentClasses(ID INT, Student VARCHAR(100), Classes VARCHAR(100))GOINSERT INTO StudentClassesSELECT 1, 'Mark', 'Maths,Science,English'UNION ALLSELECT 2, 'John', 'Science,English'UNION ALLSELECT 3, 'Robert', 'Maths,English'GOSELECT *FROM StudentClassesGO
A continuación, vamos a escribir un código que dividirá la cadena de valores de comandos separados en una columna.
SELECT ID, Student, value FROM StudentClasses CROSS APPLY STRING_SPLIT(Classes, ',')GO
Eso es todo. Ya hemos terminado. Es una tarea muy sencilla con la ayuda de la nueva función. Puedes seguir limpiando tus datos de muestra ejecutando el siguiente comando.
DROP TABLE StudentClassesGO
Recuerda, si alguna vez recibes el siguiente error:
Msg 208, Nivel 16, Estado 1, Línea 7
Nombre de objeto inválido ‘STRING_SPLIT’.
Le sugiero que lea esta entrada del blog para la solución del error anterior. Esta función sólo funcionará si tienes el nivel de compatibilidad a 2016 o posterior.