2014-09-24 33 views
0

我有以下存儲在XML列在SQL Server數據庫中的XML如何使用SELECT查詢替換XML中的文本值?

<FRUITS> 
    <FRUIT> APPLE1234 </FRUIT> 
    <FRUIT> APPLE3456 </FRUIT> 
    <FRUIT> ORANGE123 </FRUIT> 
</FRUITS> 

我有一個選擇查詢:

SELECT 
    FRUITS.Value('(FRUITS/FRUIT)','nvarchar(max)') as FRUIT 
FROM 
    BASKET 

預期結果:

APPLE_FRUIT1 
APPLE_FRUIT2 
ORANGE_FRUIT1 

如何更換值在選擇查詢?

+0

你的xml被編輯吃掉了 – Jay 2014-09-24 19:30:08

+0

非常感謝你marc_s。我是一個新用戶,正在努力解決格式錯誤。謝謝你節省我的時間。 – Hari 2014-09-24 19:33:43

回答

0

你應該嘗試這樣的事:

SELECT 
    xc.value('.', 'varchar(50)') 
FROM 
    dbo.BASKET 
CROSS APPLY 
    XmlContent.nodes('/FRUITS/FRUIT') AS XT(XC) 

這應該給你的預期輸出。

它通過爲每個<FRUIT>元素創建一個「XML片段列表」,然後在SELECT語句中提取該XML元素的內容。

+0

是的,我正在使用上述格式。由於這是一個例子,我沒有使用交叉應用。但我的要求是直接在SELECT查詢中更改值。那可能嗎? – Hari 2014-09-24 19:38:12

+0

@Hari:我真的不明白....你是什麼意思*改變SELECT *中的值?你想輸出的東西不是列中的東西嗎?或者你是什麼意思? – 2014-09-24 19:39:40

+0

是的,我想要的是不同於列中的輸出。 APPLE1234 ---> APPLE_FRUIT1,APPLE3456 ---> APPLE_FRUIT2,ORANGE123 - > ORANGE_FRUIT1 – Hari 2014-09-24 20:04:56

相關問題