Search the MySQL manual:
Subscribe to the monthly
MySQL Newsletter!

6.3.3.1 Арифметические операции

В MySQL можно применять обычные арифметические операторы. Следует иметь в виду, что если оба аргумента являются целыми числами, то при использовании операторов `-', `+' и `*' результат вычисляется с точностью BIGINT (64 бита). Если один из аргументов - беззнаковое целое число, а второй аргумент - также целое число, то результат будет беззнаковым целым числом. See section 6.3.5 Функции приведения типов.

+
Сложение:
mysql> SELECT 3+5;
        -> 8
-
Вычитание:
mysql> SELECT 3-5;
        -> -2
*
Умножение:
mysql> SELECT 3*5;
        -> 15

mysql> SELECT 18014398509481984*18014398509481984.0;
        -> 324518553658426726783156020576256.0

mysql> SELECT 18014398509481984*18014398509481984;
        -> 0
В последнем выражении мы получим неверный результат, так как произведение умножения целых чисел выходит за границы 64-битового диапазона для вычислений с точностью BIGINT.
/
Деление:
mysql> SELECT 3/5;
        -> 0.60
Деление на ноль приводит к результату NULL:
mysql> SELECT 102/(1-1);
        -> NULL
Деление будет выполняться по правилам BIGINT-арифметики только в случае, если эта операция представлена в контексте, где ее результат преобразуется в INTEGER!

User Comments

Posted by Chris Lacy-Hulbert on October 1 2003 9:59am[Delete] [Edit]

Beware that if one of the values in your arithmetic statment is NULL you will get a NULL result. Perhaps the simplest illustration of this is as below. Note that 4 + NULL does not return 4:

mysql> select 4 + NULL;

+----------+
| 4 + NULL |
+----------+
| NULL |
+----------+
1 row in set (0.00 sec)

hth
christo

Posted by Ebow Anamuah-Mensah on October 30 2003 12:00am[Delete] [Edit]

To get around the problem of adding numeric and NULL values

example:
SELECT 4 + NULL;
-> NULL

You can use the IFNULL() function:
SELECT 4 + IFNULL(NULL,0);
-> 4

This is particularly useful when using fields that can be NULL

Ebow

Posted by elrad on November 21 2003 2:21am[Delete] [Edit]

The previous trick:
SELECT 4 + IFNULL(NULL,0);
is perfect to create a progressive sum of a field values, with this query structure:

select field1, @field2 := (ifnull(@field2, 0) + field2) as field2 from tablename

using a mysql variable.

Hi

Add your own comment.