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)
Comments
Post a Comment