sql server - selecting multiple rows and columns over a xml variable -


usually use xml variable in filters, because easy work.

considering tablea, column1 primary key:

declare @xml xml = '<column1>1</column1><column1>2</column1>'  select * tablea     column1 in (select x.i.value('.', 'bigint') @xml.nodes('/column1') x(i)) or     @xml null 

it works because select on xml returns 2 rows, values 1 , 2.

now have tableb, composite primary key, column1 , column2. so:

declare @xml xml = '<row><column1>1</column1><column2>2</column2></row><row><column1>3</column1><column2>4</column2></row>' 

how can write select on xml return each row , columns, like:

column1 column2 1       2 3       4 

declare @xml xml = '<row><column1 a="a">1</column1><column2>2</column2></row><row>' +     '<column1>3</column1><column2>4</column2></row>'  select  col.value('data(column1[1])', 'int') column1 ,       col.value('data(column2[1])', 'int') column2    @xml.nodes('/row') tbl(col) 

example @ sql fiddle.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -