Skip to content Skip to sidebar Skip to footer

Getting Values From Xml Type Field Using In Sql Server

I have MS SQL table which contains a XML type field. This field has data in the format below: AA &

Solution 1:

Try this:

DECLARE @test TABLE(ID INT, XmlCol XML)

INSERT INTO @test VALUES(1, '<doc><quote><code>AA</code></quote><quote><code>BB</code></quote><quote><code>CC</code></quote></doc>')

INSERT INTO @test VALUES(2, '<doc><quote><code>BB</code></quote><quote><code>AA</code></quote><quote><code>CC</code></quote></doc>')

SELECT
    ID,
    X.Doc.value('(quote/code)[1]', 'varchar(20)') AS 'Code1',
    X.Doc.value('(quote/code)[2]', 'varchar(20)') AS 'Code2',
    X.Doc.value('(quote/code)[3]', 'varchar(20)') AS 'Code3'
FROM @test
CROSS APPLY xmlcol.nodes('doc') AS X(Doc)

Gives you an output of:

ID  Code1   Code2   Code3
1   AA  BB  CC
2   BB  AA  CC

Solution 2:

declare @x xml = '<doc><quote><code>AA</code></quote><quote><code>BB</code></quote><quote><code>CC</code></quote></doc>';

select @x.value('(doc/quote/code)[1]', 'varchar(max)')
    , @x.value('(doc/quote/code)[2]', 'varchar(max)')
    , @x.value('(doc/quote/code)[3]', 'varchar(max)')

For @marc_s,

DECLARE @test TABLE(ID INT, XmlCol XML)

INSERT INTO @test VALUES(1, '<doc><quote><code>AA</code></quote><quote><code>BB</code></quote><quote><code>CC</code></quote></doc>')

INSERT INTO @test VALUES(2, '<doc><quote><code>BB</code></quote><quote><code>AA</code></quote><quote><code>CC</code></quote></doc>')




SELECT
    ID,
    XmlCol.value('(doc/quote/code)[1]', 'varchar(20)') AS 'Code1',
    XmlCol.value('(doc/quote/code)[2]', 'varchar(20)') AS 'Code2',
    XmlCol.value('(doc/quote/code)[3]', 'varchar(20)') AS 'Code3'
FROM @test

Post a Comment for "Getting Values From Xml Type Field Using In Sql Server"