2011-12-13 21 views
1

私のようなXMLが含まれていDescriptionという名前のカラムを持つテーブルがあります。私はこのXMLでのValue属性を表し@valueと呼ばれるパラメータを設定したい場合は、私がSELECTするにはどうすればよいXML列でxpathを使用して行を選択するにはどうすればよいですか?

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

を行MyTableからDescription列のSpecialCode属性が@valueに等しい行がありますか?

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

答えて

3

についての方法:あなたのXML列が別の列にある場合

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

、あなたが使用します:

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列に適切なテーブルエイリアスを付加してください....

+0

素晴らしい!ありがとう!もし私が参加した別のテーブルから来ているコラムですか? – pencilCake

+0

@pencilCake:私の応答を更新しました –

関連する問題