КаталогИндекс раздела
НазадСодержаниеВперед

Арифметические выражения

Арифметические выражения выполняют операции, которые включают в себя сложение, вычитание, умножение, деление и деление по модулю.

Следующая таблица описывает арифметические операторы, перечисляя их в порядке приоритетов операторов от высшего к низшему. Унарные операторы имеют высший приоритет, затем идут бинарные операторы, за исключением тех случаев, когда скобки заставляют вычислять бинарные операторы в первую очередь.

Таблица 1. Арифметические операторы в XQuery
Оператор Назначение Направление
-(унарный), + (унарный) меняет знак значения операнда, сохраняет знак значения операнда справа налево
*, div, idiv, mod умножение, деление, деление нацело, деление по модулю слева направо
+, - сложение, вычитание слева направо
Примечание: Оператору вычитания должен предшествовать пробельный символ, если в противном случае оператор может быть проинтерпретирован как часть предыдущей лексемы. Например, a-b интерпретируется как имя, но a - b и a -b интерпретируются как арифметические операции.

Результатом арифметического выражения является числовое значение, пустая последовательность или ошибка. Когда арифметическое выражение вычисляется, каждый операнд атомизируется (преобразуется в атомарное значение) и применяются следующие правила:

Если типы операндов после вычисления являются правильными комбинациями для арифметического оператора, то оператор применяется к атомизированным операндам и результат этой операции является атомарным значением или ошибкой (например, ошибка может получиться от деления на ноль.) Если типы операндов не являются правильными комбинациями для арифметического оператора, то возвращается ошибка.

Таблица 2 показывает правильные комбинации типов для арифметических операторов. В этой таблице буква A представляет первый операнд, а буква B представляет второй операнд. Слово "числовой" означает типы xs:integer, xs:decimal, xs:float, xs:double или любые типы, производные от них. Если результирующий тип оператора указан как числовой, то результирующий тип должен быть первым из упорядоченного списка (xs:integer, xs:decimal, xs:float, xs:double), в который все операнды могут быть преобразованы путем подстановки подтипов и перевода типов.

Таблица 2. Допустимые типы для операндов арифметических выражений xs:date
Оператор с операндами Тип операнда A Тип операнда B Результирующий тип
A + B числовой числовой числовой
xdt:yearMonthDuration xs:date
xdt:yearMonthDuration xs:date xs:date
xs:date xdt:dayTimeDuration xs:date
xdt:dayTimeDuration xs:date xs:date
xs:time xdt:dayTimeDuration xs:time
xdt:dayTimeDuration xs:time xs:time
xs:dateTime xdt:yearMonthDuration xs:dateTime
xdt:yearMonthDuration xs:dateTime xs:dateTime
xs:dateTime xdt:dayTimeDuration xs:dateTime
xdt:dayTimeDuration xs:dateTime xs:dateTime
xdt:yearMonthDuration xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration xdt:dayTimeDuration xdt:dayTimeDuration
A - B числовой числовой числовой
xs:date xs:date xdt:dayTimeDuration
xs:date xdt:yearMonthDuration xs:date
xs:date xdt:dayTimeDuration xs:date
xs:time xs:time xdt:dayTimeDuration
xs:time xdt:dayTimeDuration xs:time
xs:dateTime xs:dateTime xdt:dayTimeDuration
xs:dateTime xdt:yearMonthDuration xs:dateTime
xs:dateTime xdt:dayTimeDuration xs:dateTime
xdt:yearMonthDuration xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration xdt:dayTimeDuration xdt:dayTimeDuration
A * B числовой числовой числовой
xdt:yearMonthDuration числовой xdt:yearMonthDuration
числовой xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration числовой xdt:dayTimeDuration
числовой xdt:dayTimeDuration xdt:dayTimeDuration
A idiv B числовой числовой xs:integer
A div B числовой числовой числовой, но xs:decimal, если оба операнда - xs:integer
xdt:yearMonthDuration числовой xdt:yearMonthDuration
xdt:dayTimeDuration числовой xdt:dayTimeDuration
xdt:yearMonthDuration xdt:yearMonthDuration xs:decimal
xdt:dayTimeDuration xdt:dayTimeDuration xs:decimal
A mod B числовой числовой числовой

Примеры


НазадСодержаниеВперед
КаталогИндекс раздела