sql-server - 通过 SQL Server XML 函数处理 XML prolog
问题描述
我有一个带有 XML 列的大型数据库表。XML 内容是一种文件,如下所示:
<?int-dov version="1.0" encoding="UTF-8" standalone="no"?>
<ds:datastoreItem ds:itemID="{F8484AF4-73BF-45CA-A524-0D796F244F37}" xmlns:ds="http://schemas.openxmlformats.org/officeDocument/2006/customXml"><ds:schemaRefs><ds:schemaRef ds:uri="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"/></ds:schemaRefs></ds:datastoreItem>
我正在寻找一种函数或快速方法来获取 T-SQL 查询中的独立属性值。当我运行以下查询时:
select XmlContent.query('@standalone') from XmlDocuments
我收到此错误消息:
Msg 2390, Level 16, State 1, Line 4
XQuery [XmlDocuments.XmlContent.query()]: Top-level attribute nodes are not supported
所以,如果有人给我一个解决这个问题的解决方案,我将不胜感激。
解决方案
您可以使用该processing-instruction()
功能来获得它。
SELECT @xml.value('./processing-instruction("int-dov")[1]','nvarchar(max)')
结果 |
---|
版本=“1.0”编码=“UTF-8”独立=“否” |
如果您只想获得standalone
零件,我发现的唯一方法是从中构造一个 XML 节点:
SELECT CAST(
N'<x ' +
@xml.value('./processing-instruction("int-dov")[1]','nvarchar(max)') +
N' />' AS xml).value('x[1]/@standalone','nvarchar(10)'
结果 |
---|
不 |
推荐阅读
- python - 访问函数内所有参数名称和所有参数值的列表
- php - 如何使用 guzzle promise 获取所有分页数据
- c# - 获取多个datagridew c#的数据
- php - 如何计算所有行中等于相同id的列?
- ruby - Windows 上的 Jekyll 不编译 SASS
- javascript - 修改脚本以折叠提交表单上的 div
- c# - 尝试获取 StudentId=1 的“等级”时出错
- python - 使用 numpy.histogram 的输出如何绘制简单的曲线图?
- linux - Thymeleaf sec:authorize 和 sec:authentication 属性,对生产不生效,但在 IDE 上工作正常
- php - Cloudways 的弹性电子邮件插件与自定义 PHP