xQuery LIKE-оператор? - PullRequest
       7

xQuery LIKE-оператор?

6 голосов
/ 09 февраля 2011

Есть ли способ выполнить операцию LIKE с XQuery так же, как с SQL?

Я не хочу строить некоторые выражения "arguments с", "с концами" и "содержит".

Пример того, чего я хочу достичь:

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?

EDIT:

Получил ответ на вопрос выше. Новая проблема:

Есть ли способ сделать это наоборот? Я хотел бы выполнить эти запросы с SQL-эквивалентом оператора NOT LIKE. Это возможно? Должен быть в выражении FLWOR

EDIT2:

Решил проблему. Вы можете запустить fn: not (начинается с ('123', '1')), и он возвращает false.

1 Ответ

13 голосов
/ 09 февраля 2011

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), которых может быть достаточно.

...