所以我花了一整天时间寻找使用xpath / xquery作为SQL Server查询的一部分来从XML数据列返回值无效的好例子。
这就是我想要做的。我在表中的XML数据列中有以下XML:
<Document ID="156">
<Version>1.0</Version>
<LastModifiedInVersion>1.0</LastModifiedInVersion>
<Signatures />
<Controls>
<Control ID="TB1">
<Value>Hello world!</Value>
</Control>
</Controls>
<AutoKeys />
</Document>
我正在尝试编写一个SQL Server查询,该查询将返回ID
节点的Document
属性的值。我想对表中的所有行执行此操作,并且所有XML数据都以完全相同的格式启动。
任何帮助将不胜感激!我真的需要一个干净的例子,我可以从那里拿走它!
答案 0 :(得分:8)
这就是表格的XML列中的整个XML?
在这种情况下,请使用以下内容:
SELECT
(list of other columns),
XmlColumn.value('(/Document/@ID)[1]', 'int') AS 'DocumentID'
FROM
dbo.YourTable
.value()
调用基本上将XPath作为其第一个参数,并将T-SQL类型作为其第二个参数,并将该XML值作为给定的T-SQL数据类型返回给查询。
答案 1 :(得分:1)
如果您的xml作为普通字符串保存在数据库中,请立即转换并查询
SELECT CONVERT(XML, [XMLStringColumn]).value('(/Document/@ID)[1]', 'int')
FROM yourTable
答案 2 :(得分:0)
SELECT xmlcol.value('(//Document/@ID)[1]','int') AS DocID FROM xmltable