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.
    mysql> select SIGN(-32);
            -> -1
    mysql> select SIGN(0);
            -> 0
    mysql> select SIGN(234);
            -> 1
    
  • MOD(N,M)
  • % Modulo (identique à l'opérateur % en langage C). Retourne le reste de la division euclidienne de N par M.
    mysql> select MOD(234, 10);
            -> 4
    mysql> select 253 % 7;
            -> 1
    mysql> select MOD(29,9);
            -> 2
    

    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);
            -> -1
    mysql> select ROUND(-1.58);
            -> -2
    mysql> select ROUND(1.58);
            -> 2
    

    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);
            -> 0.301030
    mysql> select LOG10(100);
            -> 2.000000
    mysql> select LOG10(-100);
            -> NULL
    
  • 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 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000.

  • 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