Microsoft SQL Server
Función de cadena dividida en el servidor SQL
Buscar..
Dividir una cadena en Sql Server 2016
En SQL Server 2016 finalmente han introducido la función de cadena dividida: STRING_SPLIT
Parámetros: Acepta dos parámetros.
Cuerda :
Es una expresión de cualquier tipo de carácter (es decir, nvarchar, varchar, nchar o char).
separador
Es una expresión de un solo carácter de cualquier tipo de carácter (por ejemplo, nvarchar (1), varchar (1), nchar (1) o char (1)) que se utiliza como separador para cadenas concatenadas.
Nota: Siempre debe verificar si la expresión es una cadena no vacía.
Ejemplo:
Select Value
From STRING_SPLIT('a|b|c','|')
En el ejemplo anterior
String : 'a|b|c'
separator : '|'
Resultado:
+-----+
|Value|
+-----+
|a |
+-----+
|b |
+-----+
|c |
+-----+
Si es una cadena vacía:
SELECT value
FROM STRING_SPLIT('',',')
Resultado:
+-----+
|Value|
+-----+
1 | |
+-----+
Puede evitar la situación anterior agregando una cláusula WHERE
SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''
Cadena dividida en Sql Server 2008/2012/2014 usando XML
Como no hay STRING_SPLIT
función STRING_SPLIT
, necesitamos usar el truco XML para dividir la cadena en filas:
Ejemplo:
SELECT split.a.value('.', 'VARCHAR(100)') AS Value
FROM (SELECT Cast ('<M>' + Replace('A|B|C', '|', '</M><M>')+ '</M>' AS XML) AS Data) AS A
CROSS apply data.nodes ('/M') AS Split(a);
Resultado:
+-----+
|Value|
+-----+
|A |
+-----+
|B |
+-----+
|C |
+-----+
Variable de tabla T-SQL y XML
Declare @userList Table(UserKey VARCHAR(60))
Insert into @userList values ('bill'),('jcom'),('others')
--Declared a table variable and insert 3 records
Declare @text XML
Select @text = (
select UserKey from @userList for XML Path('user'), root('group')
)
--Set the XML value from Table
Select @text
--View the variable value
XML: \<group>\<user>\<UserKey>bill\</UserKey>\</user>\<user>\<UserKey>jcom\</UserKey>\</user>\<user>\<UserKey>others\</UserKey>\</user>\</group>