Все математические функции в
случае ошибки возвращают
NULL.
-
Унарный минус. Изменяет знак аргумента:
mysql> SELECT - 2;
-> -2
Необходимо учитывать, что если
этот оператор используется с
данными типа BIGINT,
возвращаемое значение также
будет иметь тип BIGINT!
Это означает, что следует
избегать использования
оператора для целых чисел,
которые могут иметь величину
-2^63!
ABS(X)
Возвращает абсолютное значение
величины X:
mysql>SELECT ABS(2);-> 2 mysql>SELECT ABS(-32);-> 32
Эту функцию можно уверенно
применять для величин типа
BIGINT.
SIGN(X)
Возвращает знак аргумента в
виде -1, 0
или 1, в зависимости
от того, является ли X
отрицательным, нулем или
положительным:
mysql>SELECT SIGN(-32);-> -1 mysql>SELECT SIGN(0);-> 0 mysql>SELECT SIGN(234);-> 1
MOD(N,M), %
Значение по модулю (подобно
оператору % в C).
Возвращает остаток от деления
N на M:
mysql>SELECT MOD(234, 10);-> 4 mysql>SELECT 253 % 7;-> 1 mysql>SELECT MOD(29,9);-> 2
Эту функцию можно уверенно
применять для величин типа
BIGINT.
FLOOR(X)
Возвращает наибольшее целое
число, не превышающее
X:
mysql>SELECT FLOOR(1.23);-> 1 mysql>SELECT FLOOR(-1.23);-> -2
Следует учитывать, что
возвращаемая величина
преобразуется в BIGINT!
CEILING(X)
Возвращает наименьшее целое
число, не меньшее, чем
X:
mysql>SELECT CEILING(1.23);-> 2 mysql>SELECT CEILING(-1.23);-> -1
Следует учитывать, что
возвращаемая величина
преобразуется в BIGINT!
ROUND(X)
Возвращает аргумент
X, округленный до
ближайшего целого числа:
mysql>SELECT ROUND(-1.23);-> -1 mysql>SELECT ROUND(-1.58);-> -2 mysql>SELECT ROUND(1.58);-> 2
Следует учитывать, что
поведение функции
ROUND() при значении
аргумента, равном середине
между двумя целыми числами,
зависит от конкретной
реализации библиотеки C.
Округление может выполняться: к
ближайшему четному числу,
всегда к ближайшему большему,
всегда к ближайшему меньшему,
всегда быть направленным к
нулю. Чтобы округление всегда
происходило только в одном
направлении, необходимо
использовать вместо данной
хорошо определенные функции,
такие как TRUNCATE() или
FLOOR().
ROUND(X,D)
Возвращает аргумент
X, округленный до
числа с D десятичными
знаками. Если D равно
0, результат будет
представлен без десятичного
знака или дробной части:
mysql>SELECT ROUND(1.298, 1);-> 1.3 mysql>SELECT ROUND(1.298, 0);-> 1
EXP(X)
Возвращает значение e
(основа натуральных
логарифмов), возведенное в
степень X:
mysql>SELECT EXP(2);-> 7.389056 mysql>SELECT EXP(-2);-> 0.135335
LN(X)
Возвращает натуральный
логарифм числа X:
mysql>SELECT LN(2);-> 0.693147 mysql>SELECT LN(-2);-> NULL
Эта функция появилась в MySQL 4.0.3.
Это синоним LOG(X).
LOG(B, X)
Если вызывается с одним
параметром, возвращает
натуральный логарифм числа
X:
mysql>SELECT LOG(2);-> 0.693147 mysql>SELECT LOG(-2);-> NULL
Если вызывается с двумя
параметрами, функция
возвращает логарифм числа
X по базе B:
mysql>SELECT LOG(2,65536);-> 16.000000 mysql>SELECT LOG(1,100);-> NULL
Опция указания базы логарифма
появилась в MySQL 4.0.3.
LOG(B,X) эквалиентно
LOG(X)/LOG(B).
LOG2(X)
Возвращает логарифм числа
X по базе 2:
mysql>SELECT LOG2(65536);-> 16.000000 mysql>SELECT LOG2(-100);-> NULL
Функция LOG2() полезна с
тем, чтобы узнать, сколько бит
число потребует для хранения.
Эта функция добавлена в MySQL 4.0.3.
В более старых версиях
вызывайте вместо нее:
LOG(X)/LOG(2)
LOG10(X)
Возвращает десятичный логарифм
числа X:
mysql>SELECT LOG10(2);-> 0.301030 mysql>SELECT LOG10(100);-> 2.000000 mysql>SELECT LOG10(-100);-> NULL
POW(X,Y),
POWER(X,Y)
Возвращает значение аргумента
X, возведенное в
степень Y:
mysql>SELECT POW(2,2);-> 4.000000 mysql>SELECT POW(2,-2);-> 0.250000
SQRT(X)
Возвращает неотрицательный
квадратный корень числа
X:
mysql>SELECT SQRT(4);-> 2.000000 mysql>SELECT SQRT(20);-> 4.472136
PI()
Возвращает значение числа "пи". По умолчанию представлено 5 десятичных знаков, но в MySQL для представления числа "пи" при внутренних вычислениях используется полная двойная точность.
mysql>SELECT PI();-> 3.141593 mysql>SELECT PI()+0.000000000000000000;-> 3.141592653589793116
COS(X)
Возвращает косинус числа
X, где X
задается в радианах:
mysql> SELECT COS(PI());
-> -1.000000
SIN(X)
Возвращает синус числа
X, где X
задается в радианах:
mysql> SELECT SIN(PI());
-> 0.000000
TAN(X)
Возвращает тангенс числа
X, где X
задается в радианах:
mysql> SELECT TAN(PI()+1);
-> 1.557408
ACOS(X)
Возвращает арккосинус числа
X, т.е. величину,
косинус которой равен
X. Если X не
находится в диапазоне от
-1 до 1,
возвращает NULL:
mysql>SELECT ACOS(1);-> 0.000000 mysql>SELECT ACOS(1.0001);-> NULL mysql>SELECT ACOS(0);-> 1.570796
ASIN(X)
Возвращает арксинус числа
X, т.е. величину, синус
которой равен X. Если
X не находится в
диапазоне от -1 до
1, возвращает
NULL:
mysql>SELECT ASIN(0.2);-> 0.201358 mysql>SELECT ASIN('foo');-> 0.000000
ATAN(X)
Возвращает арктангенс числа
X, т.е. величину,
тангенс которой равен
X:
mysql>SELECT ATAN(2);-> 1.107149 mysql>SELECT ATAN(-2);-> -1.107149
ATAN(Y,X),
ATAN2(Y,X)
Возвращает арктангенс двух
переменных X и
Y. Вычисление
производится так же, как и
вычисление арктангенса Y /
X, за исключением того, что
знаки обоих аргументов
используются для определения
квадранта результата:
mysql>SELECT ATAN(-2,2);-> -0.785398 mysql>SELECT ATAN2(PI(),0);-> 1.570796
COT(X)
Возвращает котангенс числа
X:
mysql>SELECT COT(12);-> -1.57267341 mysql>SELECT COT(0);-> NULL
RAND(), RAND(N)
Возвращает случайную величину
с плавающей точкой в диапазоне
от 0 до 1,0.
Если целочисленный аргумент
N указан, то он
используется как начальное
значение этой величины:
mysql>SELECT RAND();-> 0.9233482386203 mysql>SELECT RAND(20);-> 0.15888261251047 mysql>SELECT RAND(20);-> 0.15888261251047 mysql>SELECT RAND();-> 0.63553050033332 mysql>SELECT RAND();-> 0.70100469486881
В выражениях вида ORDER
BY не следует использовать
столбец с величинами
RAND(), поскольку
применение оператора ORDER
BY приведет к многократным
вычислениям в этом столбце. В
версии MySQL 3.23 можно, однако,
выполнить следующий оператор:
SELECT * FROM table_name ORDER BY
RAND(): он полезен для
получения случайного
экземпляра из множества
SELECT * FROM table1,table2 WHERE a=b AND c<d
ORDER BY RAND() LIMIT 1000. Следует
учитывать, что оператор
RAND() в выражении
WHERE при выполнении
выражения WHERE будет
вычисляться каждый раз заново.
Оператор RAND() не
следует воспринимать как
полноценный генератор
случайных чисел: это просто
быстрый способ динамической
генерации случайных чисел,
переносимых между платформами
для одной и той же версии MySQL.
LEAST(X,Y,...)
Если задано два или более аргументов, возвращает наименьший (с минимальным значением) аргумент. Сравнение аргументов происходит по следующим правилам:
Если возвращаемая величина
используется в
целочисленном контексте
(INTEGER), или все
аргументы являются
целочисленными, то они
сравниваются как целые
числа.
Если возвращаемая величина
используется в контексте
действительных чисел
(REAL) или все
аргументы являются
действительными числами, то
они сравниваются как числа
типа REAL.
Если один из аргументов является зависимой от регистра строкой, то данные аргументы сравниваются с учетом регистра.
В остальных случаях аргументы сравниваются как строки, независимые от регистра.
mysql>SELECT LEAST(2,0);-> 0 mysql>SELECT LEAST(34.0,3.0,5.0,767.0);-> 3.0 mysql>SELECT LEAST("B","A","C");-> "A"
В версиях MySQL до 3.22.5 можно использовать MIN() вместо LEAST.
GREATEST(X,Y,...)
Возвращает наибольший (с
максимальным значением)
аргумент. Сравнение аргументов
происходит по тем же правилам,
что и для LEAST:
mysql>SELECT GREATEST(2,0);-> 2 mysql>SELECT GREATEST(34.0,3.0,5.0,767.0);-> 767.0 mysql>SELECT GREATEST("B","A","C");-> "C"
В версиях MySQL до 3.22.5 можно
использовать MAX()
вместо GREATEST.
DEGREES(X)
Возвращает аргумент
X, преобразованный из
радианов в градусы:
mysql> SELECT DEGREES(PI());
-> 180.000000
RADIANS(X)
Возвращает аргумент
X, преобразованный из
градусов в радианы:
mysql> SELECT RADIANS(90);
-> 1.570796
TRUNCATE(X,D)
Возвращает число X,
усеченное до D
десятичных знаков. Если
D равно 0,
результат будет представлен
без десятичного знака или
дробной части:
mysql>SELECT TRUNCATE(1.223,1);-> 1.2 mysql>SELECT TRUNCATE(1.999,1);-> 1.9 mysql>SELECT TRUNCATE(1.999,0);-> 1 mysql>SELECT TRUNCATE(-1.999,1);-> -1.9
Начиная с MySQL 3.23.51 все числа округляются к нулю.
Если D - негативное, то
тогда вся часть числа
обнуляется:
mysql> SELECT TRUNCATE(122,-2);
-> 100
Следует учитывать, что обычно в
компьютерах десятичные числа
хранятся не так, как целые, а как
числа двойной точности с
плавающим десятичным знаком
(DOUBLE). Поэтому иногда
результат может вводить в
заблуждение, как в следующем
примере:
mysql> SELECT TRUNCATE(10.28*100,0);
-> 1027
Это происходит потому, что в
действительности 10,28
хранится как нечто вроде
10,2799999999999999.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
