2017-05-10 89 views
1

我正在嘗試使用SQL語句獲取添加鍵值節點之一的值。 喜歡的東西如何獲取添加鍵字段之一的值(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>Value="Tom"屬性存在 - 如果是,則從數據庫表中選擇該行。

有了您的varchar列,你可能需要使用

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

爲了得到一個XML值,以便可以應用的XQuery .exist()方法 - 但是:你應該真的該列轉換爲XML

相關問題