如何使用SELECT查询替换XML中的文本值?

时间:2014-09-24 19:28:15

标签: sql sql-server xml

我已将XML存储在SQL Server数据库的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

如何替换select查询中的值?

1 个答案:

答案 0 :(得分:0)

你应该尝试这样的事情:

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

这应该会给你预期的输出。

它的工作原理是创建一个&#34; XML片段列表&#34;对于每个<FRUIT>元素,然后在SELECT语句中提取该XML元素的内容。