读取并拆分 sql 服务器中的 XML 个重复标签
Read and split XML repeated tags in sql server
我有这个XML
<Flujo>
<nodes>
<Nombre>QWERTY</Nombre>
<NombreProceso>Nodo 2</NombreProceso>
<ProcesoTipo>4</ProcesoTipo>
<SolicitudTipo>1</SolicitudTipo>
<Rol>Ejecutivo de plaza: 1</Rol>
<Rol>Supervisor de creditos: 2</Rol>
<Rol>Supervisor de tesoreria: 2</Rol>
</nodes>
</Flujo>
我能看懂,但我只得到一个标签。之后我想拆分每个标签以获得这个
Rol Permiso
Ejecutivo de Plaza 1
Supervisor de creditos 2
Supervisor de tesoreria 2
有线索吗?
谢谢
您可以使用 xquery 路径执行此操作,下面是获得预期输出的 sql 代码
DECLARE @xml xml
SET @xml =
'<Flujo>
<nodes>
<Nombre>QWERTY</Nombre>
<NombreProceso>Nodo 2</NombreProceso>
<ProcesoTipo>4</ProcesoTipo>
<SolicitudTipo>1</SolicitudTipo>
<Rol>Ejecutivo de plaza: 1</Rol>
<Rol>Supervisor de creditos: 2</Rol>
<Rol>Supervisor de tesoreria: 2</Rol>
</nodes>
</Flujo>'
SELECT
SUBSTRING(b.value('(./text())[1]','varchar(50)'),1,CHARINDEX(':',b.value('(./text())[1]','varchar(50)'))-1) Rol,
SUBSTRING(b.value('(./text())[1]','varchar(50)'),CHARINDEX(':',b.value('(./text())[1]','varchar(50)'))+1,LEN(b.value('(./text())[1]','varchar(50)'))) Permiso
FROM @xml.nodes('/Flujo/nodes/Rol') as a(b)
我有这个XML
<Flujo>
<nodes>
<Nombre>QWERTY</Nombre>
<NombreProceso>Nodo 2</NombreProceso>
<ProcesoTipo>4</ProcesoTipo>
<SolicitudTipo>1</SolicitudTipo>
<Rol>Ejecutivo de plaza: 1</Rol>
<Rol>Supervisor de creditos: 2</Rol>
<Rol>Supervisor de tesoreria: 2</Rol>
</nodes>
</Flujo>
我能看懂,但我只得到一个标签。之后我想拆分每个标签以获得这个
Rol Permiso
Ejecutivo de Plaza 1
Supervisor de creditos 2
Supervisor de tesoreria 2
有线索吗?
谢谢
您可以使用 xquery 路径执行此操作,下面是获得预期输出的 sql 代码
DECLARE @xml xml
SET @xml =
'<Flujo>
<nodes>
<Nombre>QWERTY</Nombre>
<NombreProceso>Nodo 2</NombreProceso>
<ProcesoTipo>4</ProcesoTipo>
<SolicitudTipo>1</SolicitudTipo>
<Rol>Ejecutivo de plaza: 1</Rol>
<Rol>Supervisor de creditos: 2</Rol>
<Rol>Supervisor de tesoreria: 2</Rol>
</nodes>
</Flujo>'
SELECT
SUBSTRING(b.value('(./text())[1]','varchar(50)'),1,CHARINDEX(':',b.value('(./text())[1]','varchar(50)'))-1) Rol,
SUBSTRING(b.value('(./text())[1]','varchar(50)'),CHARINDEX(':',b.value('(./text())[1]','varchar(50)'))+1,LEN(b.value('(./text())[1]','varchar(50)'))) Permiso
FROM @xml.nodes('/Flujo/nodes/Rol') as a(b)