2017-05-10 8 views
1

SQLステートメントを使用してキーを追加するノードの値を取得しようとしています。追加キーフィールドの1つの値を取得する方法(SQL Server 2012)

SELECT ColXML from table where value = 'Tom' 

私は唯一の他の行が同じXMLが含まれているが、異なる値を持っているように、この値を持つ行をしたいような 何か。 表は ID、colXML、Createtimeです。colXML列もVARCHARです。

<?xml version="1.0" encoding="utf-8"?> 
<appSettings> 
    <add key="1" Value="John"> 
    <add key="2" Value="Tom"> 
    <add key="3" Value="Eric"> 
    <add key="4" Value="Jane"> 
    <add key="5" Value="Sarra"> 
    <add key="6" Value="Suzie"> 
    <add key="7" Value="Rick"> 
    <add key="8" Value="Jim"> 
</appSettings> 

答えて

2

あなたが列にXMLを格納する場合は、そのデータ型が本当にXMLでなければなりません - ないvarchar ....

あなたXMLとして列を持っている場合は、あなたが何かを行うことができますこのように:これにより

SELECT * 
FROM dbo.YourTable 
WHERE ColXml.exist('/appSettings/add[@Value="Tom"]') = 1 

、あなたは基本的に一つのエントリ<add>場合はと見てチェックしています属性が存在します。存在する場合は、データベーステーブルからその行を選択しています。 XQueryの.exist()方法を適用することができますので、あなたのvarchar列で

、あなたはXML値を取得するために

WHERE CAST(ColXml AS XML).exist('/appSettings/add[@Value="Tom"]') = 1 

を使用する必要があります - しかし、再び:あなたは本当にXMLにその列を変換する必要があります!

関連する問題