Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL XML查询帮助_Sql Server_Xquery - Fatal编程技术网

Sql server SQL XML查询帮助

Sql server SQL XML查询帮助,sql-server,xquery,Sql Server,Xquery,我在SQLServer2008数据库中有一个表,其中包含一个包含XML数据的nvarchar(MAX)列。数据表示搜索条件。下面是XML对于搜索条件的外观,其中包含一个顶级“或”组,该组包含一个单一条件和一个嵌套的两个条件“和”组 我得到的结果是: <FieldIDs> <int>1026</int> <int>478</int> </FieldIDs> <FieldIDs> <int>1

我在SQLServer2008数据库中有一个表,其中包含一个包含XML数据的nvarchar(MAX)列。数据表示搜索条件。下面是XML对于搜索条件的外观,其中包含一个顶级“或”组,该组包含一个单一条件和一个嵌套的两个条件“和”组

我得到的结果是:

<FieldIDs>
  <int>1026</int>
  <int>478</int>
</FieldIDs>
<FieldIDs>
  <int>1017</int>
</FieldIDs>
<FieldIDs>
  <int>1018</int>
</FieldIDs>

获取所有字段id,并将其与要检查的设置id进行比较。XQuery的
=
-运算符以基于集合的语义进行比较,因此如果左侧的一个ID等于右侧的一个ID,则该表达式的计算结果将为true

//FieldIDs/int = (42, 478)
由于“478”是字段ID,因此此查询将返回true。“42”是一个不可用的选项

我不确定您是否能够将结果强制转换为某个sql server布尔类型,因为我还没有运行一个,但您可以很容易地自己尝试


如果您还对包含的节点感兴趣,可以使用以下查询:

select CAST(OptionalConditions as xml).query('//FieldIDs')
from tblMyTable
//FieldIDs/int[. = (42,478)]

太好了,成功了。谢谢
//FieldIDs/int = (42, 478)
//FieldIDs/int[. = (42,478)]