如何在SQL Server中用T-SQL将XML节点值转为小写
在SQL Server中用T-SQL将XML列的SubRoot值转为小写
你有一张名为RootTable的表,其中Data列是XML类型,原数据如下:
| Id | Data |
|---|---|
| 1 | <Root><Id>1</Id><SubRoot>Production</SubRoot></Root> |
| 2 | <Root><Id>1</Id><SubRoot>Test</SubRoot></Root> |
需要将所有SubRoot节点的文本值转为小写,目标数据如下:
| Id | Data |
|---|---|
| 1 | <Root><Id>1</Id><SubRoot>production</SubRoot></Root> |
| 2 | <Root><Id>1</Id><SubRoot>test</SubRoot></Root> |
解决方案
使用SQL Server XML数据类型的.modify()方法,结合LOWER()函数即可实现批量更新,具体T-SQL语句如下:
UPDATE RootTable SET Data.modify('replace value of (/Root/SubRoot/text())[1] with lower((/Root/SubRoot/text())[1])')
语句说明
.modify()是XML类型专属的修改方法,replace value of用于指定要修改的节点值(/Root/SubRoot/text())[1]精准定位到SubRoot节点的文本内容,[1]确保只选中第一个匹配节点(避免多节点匹配的异常)LOWER()函数将原节点的文本值转换为小写
验证更新结果
执行以下查询确认修改是否生效:
SELECT Id, Data FROM RootTable
内容的提问来源于stack exchange,提问作者cgsabari
相关产品推荐
相关产品推荐

