SELECT
и WHERE
В 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
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:
1 row in set (0.00 sec)mysql> select 4 + NULL;
hth
christo
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
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.