从XML列中提取值,并在WHERE子句中使用它

时间:2018-11-12 11:05:42

标签: sql-server xml oracle extract-value

我在oracle和MSSQL数据库中都有下面的xml类型数据。

<row id="TT1308143CNF" xml:space="preserve">
  <c1>10</c1>
  <c2>1001</c2>
  <c3>DEBIT</c3>
  <c4>USD</c4>
  <c6>USD1000110010001</c6>
  <c7>60000.00</c7>
</row>

列类型为XMLTYPE,我想基于提取的Value在XML中进行选择。

SELECT xmlrecord
FROM xxxx
WHERE extractvalue(xmlrecord,'/row/c4') = 'USD';

上面的select查询在Oracle数据库中运行良好,请您帮助我们在MSSQL数据库中实现同样的效果。

1 个答案:

答案 0 :(得分:2)

您可以像这样使用value()函数:

SELECT *
FROM @t
WHERE xmlrecord.value('(/row/c4)[1]', 'VARCHAR(100)') = 'USD'

它假定xmlrecord是xml类型的列(或者您可以对其进行CAST)。