• Aucun résultat trouvé

Fonctions mathématiques

Parentheses. Use these to force the order of evaluation in an expression

7.3.9 Fonctions mathématiques

Toutes les fonctions mathématiques retourne NULL en cas d'erreur.

- Moins unaire. Change le signe de l'argument.

mysql> select - 2;

-> -2

Note : si cet opérateur est utilisé avec un BIGINT, le résultat sera BIGINT! Cela signifie qu'il faut éviter d'utiliser – sur des entiers qui ont la valeur -2^63!

ABS(X) Valeur absolue de X.

mysql> select ABS(2);

-> 2

mysql> select ABS(-32);

-> 32

Cette fonction ne pose aucun problème particulier avec les valeurs de type BIGINT.

SIGN(X) Retourne le signe de l'argument sous la forme -1, 0 or 1, suivant que X est négatif, nul, ou positif.

MOD(N,M) % Modulo (identique à l'opérateur % en langage C). Retourne le reste de la division euclidienne de N par M.

Cette fonction ne pose aucun problème particulier avec les valeurs de type BIGINT.

FLOOR(X) Retourne le plus grand entier possible mais plus petit que X.

mysql> select FLOOR(1.23);

-> 1

mysql> select FLOOR(-1.23);

-> -2

Note : le résultat est converti en BIGINT!

CEILING(X) Retourne le plus petit entier possible mais plus grand que X.

mysql> select CEILING(1.23);

-> 2

mysql> select CEILING(-1.23);

-> -1

Note : le résultat est converti en BIGINT!

ROUND(X) Retourne l'argument X, arrondi à l'entier le plus proche.

mysql> select ROUND(-1.23);

Note : le résultat est converti en BIGINT!

ROUND(X,D) Retourne l'argument X, arrondi au décimal le plus proche, avec D décimales. Si D =0, le résultat n'aura pas de partie décimale.

mysql> select ROUND(1.298, 1);

-> 1.3

mysql> select ROUND(1.298, 0);

-> 1

Note : le résultat est converti en BIGINT!

EXP(X) Retourne la valeur de e (base des logarithmes naturels ou népériens) à la puissance X.

mysql> select EXP(2);

-> 7.389056 mysql> select EXP(-2);

-> 0.135335

LOG(X) Retourne le logarithme naturel de X.

mysql> select LOG(2);

-> 0.693147 mysql> select LOG(-2);

-> NULL

Pour obtenir la valeur du logarithme de X dans une base arbitraire, il faut utiliser la formule LOG(X)/LOG(B).

LOG10(X) Retourne le logarithme de X en base 10.

mysql> select LOG10(2);

POW(X,Y) POWER(X,Y) Retourne la valeur de X à la puissance Y.

mysql> select POW(2,2);

-> 4.000000 mysql> select POW(2,-2);

-> 0.250000

SQRT(X) Retourne la racine carrée positive de X.

mysql> select SQRT(4);

-> 2.000000 mysql> select SQRT(20);

-> 4.472136 PI() Retourne la valeur de PI.

mysql> select PI();

-> 3.141593

COS(X) Retourne le cosinus de X, avec X en radians.

mysql> select COS(PI());

-> -1.000000

SIN(X) Retourne le sinus de X, avec X en radians.

mysql> select SIN(PI());

-> 0.000000

TAN(X) Retourne la tangente de X, avec X en radians.

mysql> select TAN(PI()+1);

-> 1.557408

ACOS(X) Retourne l'arcosinus de X, c'est à dire l'angle dont le cosinus est X en radians. Retourne NULL si X n'est pas compris entre -1 et 1.

mysql> select ACOS(1);

-> 0.000000

mysql> select ACOS(1.0001);

-> NULL

mysql> select ACOS(0);

-> 1.570796

ASIN(X) Retourne l'arsinus de X, c'est à dire l'angle dont le sinus est X en radians. Retourne NULL si X n'est pas compris entre -1 et 1.

mysql> select ASIN(0.2);

-> 0.201358

mysql> select ASIN('foo');

-> 0.000000

ATAN(X) Retourne l'arctangente de X, c'est à dire l'angle dont la tangente est X en radians.

mysql> select ATAN(2);

-> 1.107149 mysql> select ATAN(-2);

-> -1.107149

ATAN2(X,Y) Retourne l'arc tangente de deux variables X et Y. C'est le même calcul que arc tangent of Y / X, hormis le fait que les signes des deux arguments est utilisé pour déterminer le quadrant du résultat.

mysql> select ATAN(-2,2);

-> -0.785398

mysql> select ATAN(PI(),0);

-> 1.570796

COT(X) Retourne la cotangente de X.

mysql> select COT(12);

-> -1.57267341 mysql> select COT(0);

-> NULL

RAND() RAND(N) Retourne un nombre aléatoire, compris entre 0 et 1.0. Si un entier N est précisé, il est utilisé comme valeur de seed.

mysql> select RAND();

-> 0.5925

mysql> select RAND(20);

-> 0.1811

mysql> select RAND(20);

-> 0.1811 mysql> select RAND();

-> 0.2079 mysql> select RAND();

-> 0.7888

Il est impossible d'utiliser une colonne de valeur RAND() avec la clause ORDER BY , car la colonne sera évalué plusieurs fois. Avec MySQL 3.23, il est cependant possible d'écrire: SELECT * FROM Nom_table ORDER BY RAND(). Comme cela, il est possible de faire une sélection aléatoire d'une table : SELECT * FROM table1,table2

LEAST(X,Y,...) Au moins deux arguments, retourne la plus petite valeur (minimum). Les arguments sont comparés en utilisant les règles suivantes :

 Si LEAST est utilisé dans un contexte d'entiers, ou bien tous les arguments sont des entiers, les arguments sont évalués et comparés en tant qu'entiers.

 Si LEAST est utilisé dans un contexte de nombre à virgule flottante, les arguments sont évalués et comparés en tant que nombre à virgule flottante.

 Si tous les arguments sont des chaînes sensibles à la casse, tous les arguments sont comparés comme des chaînes insensibles à la casse.

 Dans tous les autres cas, les arguments sont comparés comme des chaînes insensibles à la casse.

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"

Avec les version de MySQL antérieur à la 3.22.5, il est possible d'utiliser MIN() à la place de LEAST.

GREATEST(X,Y,...) Retourne le plus grand argument de la liste. Les arguments sont comparés de la même manière que pour 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"

Avec les version de MySQL antérieur à la 3.22.5, il est possible d'utiliser MAX () à la place de GREATEST.

DEGREES(X) Retourne l'argument X, converti de radians en degrés.

mysql> select DEGREES(PI());

-> 180.000000

RADIANS(X) Retourne l'argument X, converti de radians degrés en radians.

mysql> select RADIANS(90);

-> 1.570796

TRUNCATE(X,D) Retourne l'argument X, tronqué à D décimales.

mysql> select TRUNCATE(1.223,1);

-> 1.2

mysql> select TRUNCATE(1.999,1);

-> 1.9

mysql> select TRUNCATE(1.999,0);

-> 1