如何在XML列上使用xpath来选择行?

时间:2011-12-13 16:20:40

标签: sql xml tsql xpath

我有一个名为Description的列的表,其中包含XML:

<Parent>
  <Child Target="A" Id="123456">
       <SpecialCode Target="I"  Value="2530138" />
  </Child>
</Parent>

如果我想设置一个名为@value的参数来表示此xml中的Value属性,

SELECT MyTable列的Description属性等于SpecialCode的{​​{1}}行如何@value

DECLARE @value varchar(20);
SET @value = '44555'
SELECT ....
FROM MyTable

1 个答案:

答案 0 :(得分:3)

怎么样:

SELECT (list of columns)
FROM dbo.MyTable
WHERE [Description].exist('/Parent/Child/SpecialCode[@Value=sql:variable("@value")]') = 1

如果您的XML列位于不同的列中,那么您将使用:

SELECT (list of columns)
FROM dbo.MyTable t1
INNER JOIN dbo.MyTable t2 ON t1.ID = t2.ID
WHERE t2.[Description].exist('/Parent/Child/SpecialCode[@Value=sql:variable("@value")]') = 1

只需对表进行别名,正确连接它们,并在XML列前加上适当的表别名....