Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server中读取和拆分XML重复标记_Sql_Xml_Sql Server 2005 - Fatal编程技术网

在sql server中读取和拆分XML重复标记

在sql server中读取和拆分XML重复标记,sql,xml,sql-server-2005,Sql,Xml,Sql Server 2005,我有这个XML <Flujo> <nodes> <Nombre>QWERTY</Nombre> <NombreProceso>Nodo 2</NombreProceso> <ProcesoTipo>4</ProcesoTipo> <SolicitudTipo>1</SolicitudTipo> <Rol>Ejecutivo de plaza: 1</Rol&g

我有这个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>
有线索吗


谢谢,您可以使用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) 
DECLARE@xml
SET@xml=
'
QWERTY
野二号
4.
1.
Ejecutivo de plaza:1
信贷主管:2名
特索雷里亚主管:2名
'
挑选
子字符串(b.value(“(./text())[1]”,'varchar(50)”),1,CHARINDEX(“:”,b.value(“(./text())[1]”,'varchar(50)”))-1)Rol,
子字符串(b.value(“(./text())[1]”,'varchar(50)”),CHARINDEX(“:”,b.value(“(./text())[1]”,'varchar(50)”))+1,LEN(b.value(“(./text())[1]”,'varchar(50)))Permiso
从@xml.nodes('/Flujo/nodes/Rol')作为a(b)

您想使用什么sql?我喜欢您的答案,但我需要在sql server 2005中处理此问题。谢谢,我感到困惑,我已使用sql query更新了答案,以获得您的预期输出。请检查一下
        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)