有没有办法用XQuery以与SQL相同的方式执行LIKE操作?
我不想构建一些“startswith”,“endswith”和“contains”--expressions。
我想要实现的目标:
for $x in /user where $x/firstname LIKE '%xxx' return $x
for $x in /user where $x/middlename LIKE 'xxx%' return $x
for $x in /user where $x/lastname LIKE '%xxx%' return $x
有没有办法在XQuery中实现这一目标?
编辑:
得到上述问题的答案。新问题:
有没有办法以相反的方式做到这一点?我想用sql等效的NOT LIKE运算符运行这些查询。这可能吗?它必须是FLWOR表达式
EDIT2:
解决了这个问题。你可以运行fn:not(starts-with('123','1'))并返回false。
答案 0 :(得分:13)
XPath 2.0和XQuery 1.0(由W3C标准化)具有matches
函数http://www.w3.org/TR/xpath-functions/#func-matches的正则表达式支持:
/user[matches(firstname, 'xxx$')]
当然,有starts-with
和contains
(在XPath 1.0 / 2.0中都有)和ends-with
(仅在XPath 2.0中)可能就足够了。