Справочное руководство по MySQL

6.3.3.2 Математические функции

    6.3.3.2 Математические функции

    Все математические функции в случае ошибки возвращают 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
    
    LOG(X)
    Возвращает натуральный логарифм числа X:
    mysql> SELECT LOG(2);
            -> 0.693147
    
    mysql> SELECT LOG(-2);
            -> NULL
    
    Чтобы получить логарифм числа X для произвольной основы логарифмов B, следует использовать формулу LOG(X)/LOG(B).
    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
    
    Следует учитывать, что обычно в компьютерах десятичные числа хранятся не так, как целые, а как числа двойной точности с плавающим десятичным знаком (DOUBLE). Поэтому иногда результат может вводить в заблуждение, как в следующем примере:
    mysql> SELECT TRUNCATE(10.28*100,0);
            -> 1027
    
    Это происходит потому, что в действительности 10,28 хранится как нечто вроде 10,2799999999999999.



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости