2014-09-24 30 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

相关问题