2016-04-06 6 views
2

に、私はこのXML読むとスプリットXML繰り返しタグのSQL Server

<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> 

を持って、私はそれを読むことができますが、私はちょうど1のタグを取得します。その後、各タグを分割してこれを取得したいと考えています

 Rol     Permiso 
Ejecutivo de Plaza    1 
Supervisor de creditos   2 
Supervisor de tesoreria   2 

手がかりはありますか?

おかげ

+0

何SQLあなたが使用しようとしていますか? – David

+0

Sql Server 2005 – zickno

答えて

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) 
+0

私はあなたの答えが好きですが、SQLサーバー2005でこれを処理する必要があります – zickno

+1

ありがとう、私は混乱して、私は予想される出力を得るためにSQLクエリで答えを更新しました。それをチェックしてください –

+0

うわー!ありがとうございます! – zickno

関連する問題