Spec-Zone.ru › MySQL 8.4

14.6.1 Арифметические операторы

Таблица 14.9 Арифметические операторы

Таблица 14.9 Арифметические операторы
Имя Описание
%, MOD Оператор модуля
* Оператор умножения
+ Оператор сложения
- Оператор вычитания
- Изменение знака аргумента
/ Оператор деления
DIV Целочисленное деление

Доступны обычные арифметические операторы. Результат определяется по следующим правилам:

  • В случае с -, + и *, результат вычисляется с точностью BIGINT (64-битный), если оба операнда являются целыми числами.

  • Если оба операнда являются целыми числами, и любой из них беззнаковый, результат — беззнаковое целое число. При вычитании, если включён SQL-режим NO_UNSIGNED_SUBTRACTION, результат будет со знаком, даже если любой операнд беззнаковый.

  • Если любой из операндов операторов +, -, /, *, % имеет вещественное или строковое значение, точность результата равна точности операнда с максимальной точностью.

  • При делении с использованием /, масштаб результата при использовании двух операндов с точным значением равен масштабу первого операнда плюс значение системной переменной div_precision_increment (по умолчанию 4). Например, результат выражения 5.05 / 0.014 имеет масштаб шесть десятичных знаков (360.714286).

Эти правила применяются к каждой операции, так что вложенные вычисления предполагают точность каждого компонента. Следовательно, (14620 / 9432456) / (24250 / 9432456) сначала разрешается как (0.0014) / (0.0026), а конечный результат имеет 8 десятичных знаков (0.60288653).

Из-за этих правил и способа их применения следует быть внимательным, чтобы компоненты и подкомпоненты вычисления использовали соответствующий уровень точности. См. Раздел 14.10, «Функции и операторы приведения типов».

Сведения об обработке переполнения при вычислении числовых выражений см. в Разделе 13.1.7, «Обработка значений вне диапазона и переполнения».

Арифметические операторы применяются к числам. Для других типов значений могут быть доступны альтернативные операции. Например, для добавления дат используйте DATE_ADD(); см. Раздел 14.7, «Функции дат и времени».

  • +

    Сложение:

    mysql> SELECT 3+5;
            -> 8
    
  • -

    Вычитание:

    mysql> SELECT 3-5;
            -> -2
    
  • -

    Унарный минус. Этот оператор меняет знак операнда.

    mysql> SELECT - 2;
            -> -2
    
    Примечание

    Если этот оператор используется с BIGINT, возвращаемое значение также будет BIGINT. Это означает, что следует избегать использования - с целыми числами, которые могут иметь значение −263.

  • *

    Умножение:

    mysql> SELECT 3*5;
            -> 15
    mysql> SELECT 18014398509481984*18014398509481984.0;
            -> 324518553658426726783156020576256.0
    mysql> SELECT 18014398509481984*18014398509481984;
            -> out-of-range error
    

    Последнее выражение приводит к ошибке, так как результат целочисленного умножения превышает 64-битный диапазон вычислений BIGINT. (См. Раздел 13.1, «Числовые типы данных».)

  • /

    Деление:

    mysql> SELECT 3/5;
            -> 0.60
    

    Деление на ноль приводит к результату NULL:

    mysql> SELECT 102/(1-1);
            -> NULL
    

    Деление вычисляется с арифметикой BIGINT только в контексте, где его результат преобразуется в целое число.

  • DIV

    Целочисленное деление. Отбрасывает дробную часть результата деления справа от десятичной точки.

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

    mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2;
            -> 2, -2, -2, 2
    
  • N % M, N MOD M

    Операция модуля. Возвращает остаток от деления N на M. Дополнительную информацию см. в описании функции MOD() в Разделе 14.6.2, «Математические функции».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/arithmetic-functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API