Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
使用xQuery提取SQL变量中也存在的属性值_Sql_Sql Server_Xml_Xpath_Xquery - Fatal编程技术网

使用xQuery提取SQL变量中也存在的属性值

使用xQuery提取SQL变量中也存在的属性值,sql,sql-server,xml,xpath,xquery,Sql,Sql Server,Xml,Xpath,Xquery,XML结构: ... ... ... ... 我有SQL,它将提取名为name的属性的值: 选择 选择“,”+CHAR13+P.N.value“@name”,“varcharmax” 来自myTable.message_xml.nodes的声明命名空间ns0=xxx:测试; ns0:消息/ns0:字段[@name=AAA或 @名称=BBB]“PN 对于XML路径,键入.value'substringtext[1],3','varcharmax'作为属性值 这将返回一个如下所示的列: ATTRIB

XML结构:

... ... ... ... 我有SQL,它将提取名为name的属性的值:

选择 选择“,”+CHAR13+P.N.value“@name”,“varcharmax” 来自myTable.message_xml.nodes的声明命名空间ns0=xxx:测试; ns0:消息/ns0:字段[@name=AAA或 @名称=BBB]“PN 对于XML路径,键入.value'substringtext[1],3','varcharmax'作为属性值 这将返回一个如下所示的列:

ATTRIBUTE_VALUES
---------------
AAA,
BBB
我的问题是潜在属性值的列表非常大。 我希望可以将其声明为一个变量,如:

声明@ATTRIBUTES VarCharMax 设置@ATTRIBUTES='AAA、BBB、CAR、XYZ' 然后将变量粘贴到sql中,如下所示:

[@name=sql:variable@ATTRIBUTES] 但这不适用于我用来构建变量的任何paren、逗号等组合。

您可以使用contains函数。 声明一个变量,如下所示:

DECLARE @ATTRIBUTES VarChar(Max) = '|AAA|BBB|CAR|XYZ|';
在您的查询中,不要使用@name=AAA,而是使用:


太好了,我这边+1
contains(sql:variable("@ATTRIBUTES"), concat("|", @name, "|"))