Как увеличить цикл с помощью Xquery?

как я могу увеличить цикл четырнадцатый на четырнадцатый с помощью xquery . Например, у меня есть этот цикл:

for $i in (0 to 150)
return $i

Я хочу увеличить этот цикл с четырнадцатого на четырнадцатый. Вывод:

14

28

42

56

70

etc.

Я работаю над существующей базой данных.


person A.A    schedule 19.05.2014    source источник


Ответы (2)


Попробуй это:

for $i in (0 to 150)
return ($i+1)*14
person prker    schedule 19.05.2014
comment
Или: для $i в (от 1 до 151) вернуть $i*14 - person prker; 19.05.2014

Самый простой — и, вероятно, самый легкий для чтения — подход — это фильтровать последовательность с помощью функции по модулю, но у этого есть недостаток, заключающийся в том, что все 150 значений должны быть созданы:

(1 to 150)[. mod 14 = 0]

Используя подход, который использовал @prker, вы должны самостоятельно вычислить верхнюю границу. idiv — оператор целочисленного деления.

for $i in (1 to 150 idiv 14)
return $i * 14

Используя XQuery 3.0, вы также можете вместо этого использовать оператор применения !:

(1 to 150 idiv 14) ! (. * 14)

Или, наконец, с помощью рекурсивной функции:

declare function local:n-sequence($from as xs:integer, $to as xs:integer, $step as xs:integer) {
  if ($from > $to)
  then ()
  else ($from, local:n-sequence($from + $step, $to, $step))
};

local:n-sequence(1, 150, 14)
person Jens Erat    schedule 19.05.2014