XQuery - 仅获取查询值
XQuery - Get only the Query Value
我是 XQUERY 的新手...
我有一个来自 XML 文件的元素,如下所示:
<element field="SQL" name="QUERY" value="INSERT INTO tableB SELECT * FROM tableA;"/>
我正在使用 XQuery 来获取具有 INSERT INTO 的查询。所以从我的 XML 文件中我必须收到这个:
SELECT * FROM tableA
我正在尝试使用此代码来获取:
for $x in doc("C:\XXXXX.item")
where matches($x, "INSERT INTO$") = true()
return $x/element
但它没有给我任何结果:(
怎样才能得到想要的结果?
非常感谢
在您当前的代码中,您的 $x
是一个文档的序列,并且您的 WHERE 子句正在评估该文档的计算文本值(不包括属性值)是否与正则表达式模式匹配。
相反,您可能希望遍历文档中所有属性的序列,测试这些属性是否包含 SQL 语句,然后 return 匹配属性( s) 附于.
您可以将 XQuery FLWOR 调整为:
for $x in doc("C:\XXXXX.item")//@*
where matches($x, "INSERT INTO.*"))
return $x/..
或者只写成带有谓词的 XPath:
doc("C:\XXXXX.item")//*[@*[ matches(., "INSERT INTO.*")]]
XPath 使用后代轴 //
到 select 所有使用元素 select 或 *
的元素,然后谓词过滤器评估元素的任何属性通过 selecting 所有属性与 @*
匹配 SQL 正则表达式,然后用它自己的谓词过滤器测试每个属性。如果谓词 select 至少一项,则它们的计算结果为真,并且被测试的节点是 selected.
我是 XQUERY 的新手...
我有一个来自 XML 文件的元素,如下所示:
<element field="SQL" name="QUERY" value="INSERT INTO tableB SELECT * FROM tableA;"/>
我正在使用 XQuery 来获取具有 INSERT INTO 的查询。所以从我的 XML 文件中我必须收到这个:
SELECT * FROM tableA
我正在尝试使用此代码来获取:
for $x in doc("C:\XXXXX.item")
where matches($x, "INSERT INTO$") = true()
return $x/element
但它没有给我任何结果:(
怎样才能得到想要的结果?
非常感谢
在您当前的代码中,您的 $x
是一个文档的序列,并且您的 WHERE 子句正在评估该文档的计算文本值(不包括属性值)是否与正则表达式模式匹配。
相反,您可能希望遍历文档中所有属性的序列,测试这些属性是否包含 SQL 语句,然后 return 匹配属性( s) 附于.
您可以将 XQuery FLWOR 调整为:
for $x in doc("C:\XXXXX.item")//@*
where matches($x, "INSERT INTO.*"))
return $x/..
或者只写成带有谓词的 XPath:
doc("C:\XXXXX.item")//*[@*[ matches(., "INSERT INTO.*")]]
XPath 使用后代轴 //
到 select 所有使用元素 select 或 *
的元素,然后谓词过滤器评估元素的任何属性通过 selecting 所有属性与 @*
匹配 SQL 正则表达式,然后用它自己的谓词过滤器测试每个属性。如果谓词 select 至少一项,则它们的计算结果为真,并且被测试的节点是 selected.