Условные функции 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.

Была ли полезна эта страница?

Обратная связь