我有一个名为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
答案 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列前加上适当的表别名....