Opérations arithmétiques
<<<
Fonctions mathématiques Fonctions à utiliser dans les clauses SELECT et WHERE
>>>

13.4 Fonctions numériques
13 Fonctions à utiliser dans les clauses SELECT et WHERE
 Manuel de Référence MySQL 4.1 : Version Française

Opérations arithmétiques
->Fonctions mathématiques

13.4.2 Fonctions mathématiques

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

    ABS(X)
    Retourne la valeur absolue de X .
    
    mysql> SELECT ABS(2);
            -> 2
    mysql> SELECT ABS(-32);
            -> 32
    Cette fonction est utilisable avec les valeurs issues des champs BIGINT .
    ACOS(X)
    Retourne l'arccosinus de X , c'est à dire, la valeur de l'angle dont X est la cosinus. Retourne NULL si X n'est pas dans l'intervalle -1 - 1 .
    
    mysql> SELECT ACOS(1);
            -> 0.000000
    mysql> SELECT ACOS(1.0001);
            -> NULL
    mysql> SELECT ACOS(0);
            -> 1.570796
    ASIN(X)
    Retourne l'arcsinus de X , c'est à dire, la valeur de l'angle dont le sinus est X . Retourne NULL si X n'est pas dans l'intervalle -1 - 1 :
    
    mysql> SELECT ASIN(0.2);
            -> 0.201358
    mysql> SELECT ASIN('foo');
            -> 0.000000
    ATAN(X)
    Retourne l'arctangente de X , c'est à dire, la valeur de l'angle dont la tangente est X .
    
    mysql> SELECT ATAN(2);
            -> 1.107149
    mysql> SELECT ATAN(-2);
            -> -1.107149
    ATAN(Y,X)
    ATAN2(Y,X)
    Retourne l'arctangente des variables X et Y . Cela revient à calculer l'arctangente de Y / X , excepté que les signes des deux arguments servent à déterminer le quadrant du résultat :
    
    mysql> SELECT ATAN(-2,2);
            -> -0.785398
    mysql> SELECT ATAN2(PI(),0);
            -> 1.570796
    CEILING(X)
    CEIL(X)
    Retourne la valeur entière supérieure de X .
    
    mysql> SELECT CEILING(1.23);
            -> 2
    mysql> SELECT CEILING(-1.23);
            -> -1
    Notez que la valeur retournée sera de type BIGINT !
    COS(X)
    Retourne le cosinus de X , où X est donné en radians.
    
    mysql> SELECT COS(PI());
            -> -1.000000
    COT(X)
    Retourne la cotangente de X .
    
    mysql> SELECT COT(12);
            -> -1.57267341
    mysql> SELECT COT(0);
            -> NULL
    CRC32(expr)
    Calcule la somme de contrôle et retourne un entier 32 bits non-signé. Le résultat est la valeur NULL si l'argument est NULL . L'argument attendu est une chaîne, et sera traité comme une chaîne s'il n'est pas du bon type.
    
    mysql> SELECT CRC32('MySQL');
            -> 3259397556
    CRC32() est disponible en MySQL 4.1.0.
    DEGREES(X)
    Retourne l'argument X , convertit de radians en degrés.
    
    mysql> SELECT DEGREES(PI());
            -> 180.000000
    EXP(X)
    Retourne la valeur de e (la base des logarithmes naturels) élevé à la puissance X .
    
    mysql> SELECT EXP(2);
            -> 7.389056
    mysql> SELECT EXP(-2);
            -> 0.135335
    FLOOR(X)
    Retourne la valeur entière inférieure de X .
    
    mysql> SELECT FLOOR(1.23);
            -> 1
    mysql> SELECT FLOOR(-1.23);
            -> -2
    Notez que la valeur retournée sera de type BIGINT !
    LN(X)
    Retourne le logarithme naturel de X (népérien).
    
    mysql> SELECT LN(2);
            -> 0.693147
    mysql> SELECT LN(-2);
            -> NULL
    Cette fonction a été ajoutée à MySQL à partir de la version 4.0.3. C'est un synonyme de la fonction LOG(X) .
    LOG(X)
    LOG(B,X)
    Appelée avec un seul paramètre, cette fonction retourne le logarithme naturel (népérien) de X .
    
    mysql> SELECT LOG(2);
            -> 0.693147
    mysql> SELECT LOG(-2);
            -> NULL
    Appelée avec deux paramètres, cette fonction retourne le logarithme naturel de X pour une base B arbitraire :
    
    mysql> SELECT LOG(2,65536);
            -> 16.000000
    mysql> SELECT LOG(1,100);
            -> NULL
    Cette base arbitraire a été ajoutée à MySQL à partir de la version 4.0.3. LOG(B,X) est l'équivalent de LOG(X)/LOG(B) .
    LOG2(X)
    Retourne le logarithme en base 2 de X .
    
    mysql> SELECT LOG2(65536);
            -> 16.000000
    mysql> SELECT LOG2(-100);
            -> NULL
    LOG2() est utile pour trouver combien de bits sont nécessaires pour stocker un nombre. Cette fonction a été ajoutée à MySQL à partir de la version 4.0.3. Dans les versions antérieures, vous pouvez utiliser LOG(X)/LOG(2) en remplacement.
    LOG10(X)
    Retourne le logarithme en base 10 de X .
    
    mysql> SELECT LOG10(2);
            -> 0.301030
    mysql> SELECT LOG10(100);
            -> 2.000000
    mysql> SELECT LOG10(-100);
            -> NULL
    MOD(N,M)
    N % M
    N MOD M
    Modulo (équivalent de l'opérateur % dans le langage C). Retourne le reste de la division 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 pas de problèmes avec les BIGINT .
    PI()
    Retourne la valeur de pi. Par défaut, 5 décimales sont retournées, mais MySQL utilise la double précision pour pi.
    
    mysql> SELECT PI();
            -> 3.141593
    mysql> SELECT PI()+0.000000000000000000;
            -> 3.141592653589793116
    POW(X,Y)
    POWER(X,Y)
    Retourne la valeur de X élevée à la puissance Y :
    
    mysql> SELECT POW(2,2);
            -> 4.000000
    mysql> SELECT POW(2,-2);
            -> 0.250000
    RADIANS(X)
    Retourne l'argument X , converti de degrés en radians.
    
    mysql> SELECT RADIANS(90);
            -> 1.570796
    RAND()
    RAND(N)
    Retourne un nombre aléatoire à virgule flottante compris dans l'intervalle 0 - 1.0 . Si l'argument entier N est spécifié, il est utilisé comme initialisation du générateur de nombres aléatoires.
    
    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
    Vous ne pouvez pas utiliser une colonne de valeur RAND() dans une clause ORDER BY , parce que ORDER BY va évaluer la colonne plusieurs fois. Dans la version 3.23 de MySQL, vous pouvez, tout de même, faire ceci :
    
    mysql> SELECT * FROM tbl_name ORDER BY RAND();
    
    Cette syntaxe est très pratique pour faire une sélection aléatoire de lignes :
    
    mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d
        -> ORDER BY RAND() LIMIT 1000;
    Notez que la fonction RAND() dans une clause WHERE sera réévaluée à chaque fois que WHERE sera exécuté.

    RAND() n'est pas un générateur parfait de nombres aléatoires, mais reste une manière rapide de produire des nombres aléatoires portables selon les différentes plates-formes pour une même version de MySQL.

    ROUND(X)
    ROUND(X,D)
    Retourne l'argument X , arrondi à un nombre à D décimales. Avec deux arguments, la valeur est arrondie avec D décimales.

    Si D vaut 0 , le résultat n'aura ni de partie décimale, ni de séparateur de décimal.

    
    mysql> SELECT ROUND(-1.23);
            -> -1
    mysql> SELECT ROUND(-1.58);
            -> -2
    mysql> SELECT ROUND(1.58);
            -> 2
    mysql> SELECT ROUND(1.298, 1);
            -> 1.3
    mysql> SELECT ROUND(1.298, 0);
            -> 1
    mysql> SELECT ROUND(23.298, -1);
            -> 20
    Notez que le comportement de l'opérateur ROUND() , lorsque l'argument est exactement entre deux entiers, dépend de la bibliothèque C active. Certaines arrondissent toujours à l'entier pair le plus proche, toujours vers le haut, toujours vers le bas, ou toujours vers zéro. Si vous avez besoin d'un certain type d'arrondissement, vous devez utiliser une fonction bien définie comme TRUNCATE() ou FLOOR() .
    SIGN(X)
    Retourne le signe de l'argument sous la forme -1 , 0 , ou 1 , selon que X est négatif, zéro, ou positif.
    
    mysql> SELECT SIGN(-32);
            -> -1
    mysql> SELECT SIGN(0);
            -> 0
    mysql> SELECT SIGN(234);
            -> 1
    SIN(X)
    Retourne le sinus de X , où X est donné en radians.
    
    mysql> SELECT SIN(PI());
            -> 0.000000
    SQRT(X)
    Retourne la racine carrée de X .
    
    mysql> SELECT SQRT(4);
            -> 2.000000
    mysql> SELECT SQRT(20);
            -> 4.472136
    TAN(X)
    Retourne la tangente de X , où X est donné en radians.
    
    mysql> SELECT TAN(PI()+1);
            -> 1.557408
    TRUNCATE(X,D)
    Retourne l'argument X , tronqué à D décimales. Si D vaut 0 , le résultat n'aura ni séparateur décimal, ni partie décimale.
    
    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
    A partir de MySQL 3.23.51 tous les nombres sont arrondis vers zéro.

    Notez que les nombres décimaux ne sont pas stockés exactement comme les nombres entiers , mais comme des valeurs doubles. Vous pouvez être dupés par le résultat suivant :

    
    mysql> SELECT TRUNCATE(10.28*100,0);
           -> 1027
    Ce résultat est normal car 10.28 est actuellement stocké comme cela 10.2799999999999999.

<< Fonctions mathématiques >>
Opérations arithmétiques Fonctions numériques Fonctions à utiliser dans les clauses SELECT et WHERE