SQL Server 2019提取XML节点纯文本值的方法咨询
从SQL Server XML字段提取指定节点文本的解决方案
假设你的表名为YourTable,存储XML数据的字段名为XmlColumn,可通过SQL Server的XQuery功能直接提取目标文本,操作如下:
声明XML命名空间
目标节点使用了x:String前缀,需先通过WITH XMLNAMESPACES声明x对应的命名空间URI(需替换为你XML中实际绑定的地址,常见如http://schemas.microsoft.com/2003/10/Serialization/)。用
.value()方法提取纯文本
通过XQuery路径定位到<PrebillMarkup.NewValues>和<PrebillMarkup.OriginalValues>下的x:String节点,直接提取其文本内容。
示例查询(针对row_uno=6599064)
WITH XMLNAMESPACES ('http://schemas.microsoft.com/2003/10/Serialization/' AS x) SELECT XmlColumn.value('(/PrebillMarkup.NewValues/x:String)[1]', 'NVARCHAR(MAX)') AS NewValueText, XmlColumn.value('(/PrebillMarkup.OriginalValues/x:String)[1]', 'NVARCHAR(MAX)') AS OriginalValueText FROM YourTable WHERE row_uno = 6599064;
多节点场景处理
若XML中存在多个x:String节点,可使用.nodes()方法遍历所有匹配节点:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/2003/10/Serialization/' AS x) SELECT n.value('.', 'NVARCHAR(MAX)') AS NewValueText FROM YourTable CROSS APPLY XmlColumn.nodes('/PrebillMarkup.NewValues/x:String') AS t(n) WHERE row_uno = 6599064;
内容的提问来源于stack exchange,提问作者Mandy
相关产品推荐
相关产品推荐

