sql-server - "XQuery [nodes()]: The XQuery syntax ' 联合 ' is not supported."

标签 sql-server xml xquery

使用下面的代码,我收到以下错误:

XQuery [nodes()]: The XQuery syntax 'union' is not supported.

DECLARE @input XML = (我正在尝试输入该字符串的完整 XML,但它没有在这里进行翻译(被截断)。如果我选​​择其中的一部分,它甚至会被截断。我知道这是回答问题的关键,但也许有人可以解释错误,我可以调查这个变量字符串)??

CREATE TABLE #Fields 
(F1RowID int identity(1,1),GroupID int,TableID int,FieldName nvarchar(50)
,FieldValue nvarchar(50),OldFieldValue nvarchar(50),ExcludeField bit)

INSERT INTO #Fields (FieldName,FieldValue,TableID,ExcludeField) 
SELECT FieldName = C.value('local-name(.)', 'varchar(50)'),   
FieldValue = C.value('(.)[1]', 'varchar(50)')    ,
TableID = 1,ExcludeField = 0 FROM @input.nodes
('/data/CSNPay|CSNHistoryGroup/CSNPay|CSNHistory/*') AS T(C)

最佳答案

SQL Server 不支持 XQuery 的联合运算符 |。如果各个子查询不返回重叠的结果,那么您实际上并不需要基于集合的联合功能:只需将一个序列放在一起即可。否则,您将不得不处理重复项。

FROM @input.nodes('(/data/CSNPay, CSNHistoryGroup/CSNPay, CSNHistory/*)') AS T(C)

我不确定这个查询是否真正按照您的预期进行——您确定各个路径(有些从根开始,有些从当前上下文开始)吗?

关于sql-server - "XQuery [nodes()]: The XQuery syntax ' 联合 ' is not supported.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37660536/

相关文章:

c# - 在 C# 中使用 Enum 表示数据层对象的 'status'

sql - 在 SQL Server 中将年份 (aaaa) 和季度(1 到 4)转换为日期时间

syntax - XQuery 函数 : variable and expression vs FLOWR

java - 我该如何使用 GenyMotion 解决这个问题?

c# - 将 DataSet 序列化为 XDocument 空格问题

xml - 如何使用 XQuery 组合多个 XML 文件

xml - XPath 计数为什么它不能本能地工作?

sql-server - 每天删除/var/opt/mssql/log中的所有文件?

sql - 数据库复制是保持生产和开发数据库同步的方法吗?

android - 在自定义 View 上设置内部 edittext xml 属性