Условные функции RQL для работы с объектами доменов
Условные функции в RQL обеспечивают выполнение логических и сравнительных операций, позволяя определить выполнение различных выражений в зависимости от заданных условий.
Возвращение значения в зависимости от условия if()
Функция if() выполняет условное ветвление:
-
Если условие истинно, она возвращает результат соответствующей инструкции для выполнения.
-
В противном случае возвращается результат альтернативной инструкции.
if(<cond>, <then>, <else>)
Здесь:
-
<cond>— проверяемое условие; -
<then>— выражение, результат которого возвращается, еслиcondистинно; -
<else>— выражение, результат которого возвращается, еслиcondложно.
if(isNull(@doc.attributesDecimal), 0, multiply(@doc.attributesDecimal, 10))
Это выражение возвращает 0, если значение атрибута attributesDecimal текущего объекта пусто. В противном случае оно возвращает значение атрибута, умноженное на 10.
multiIf()
Функция multiIf() последовательно вычисляет несколько условий. Для первого условия, которое истинно, возвращает значение соответствующей ветки. Если ни одно из условий не истинно, возвращает значение альтернативной инструкции.
multiIf(cond_1, then_1, cond_2, then_2, ..., cond_N, then_N, else)
Здесь:
-
<cond_N>— условие ветки; -
then_N— результат функции при выполнении условияcond_N. -
else— результат функции, если ни одно из условий не выполнено.
multiIf(like(@doc.attributesString, '%multiIf1%'), 10, like(@doc.attributesString, '%multiIf2%'), 20, like(@doc.attributesString, '%multiIf3%'), 30, 0)
Это выражение последовательно проверяет условие:
-
Если значение атрибута
attributesStringтекущего объекта содержит подстроку "multiIf1", возвращает10, иначе переходит ко второму условию. -
Если значение атрибута
attributesStringтекущего объекта содержит подстроку "multiIf2", возвращает20, иначе переходит к третьему условию. -
Если значение атрибута
attributesStringтекущего объекта содержит подстроку "multiIf3", возвращает30, иначе переходит к альтернативной инструкции. -
Если ни одно условие выше не выполнилось, возвращает
0.
Была ли полезна эта страница?