PrécédentTable des matière Suivant
 

7.3.5 Opérateurs de comparaison

Les opérations de comparaison retourne soit 1 (TRUE), 0 (FALSE) ou NULL. Ces fonctions s'appliquent aussi bien aux nombres qu'aux chaînes. Les chaînes sont automatiquement converties en nombre et les nombres en chaîne, suivant les besoins (comme en Perl).

MySQL effectue les comparaisons en suivant les règle suivantes

Par défaut, les comparaisons de chaîne sont fait sans tenir compte de la casse, et en utilisant le jeu de caractère courant (ISO-8859-1 Latin1 par défaut, qui fonctionne bien pour l'anglais). Les exemples suivants illustrent les règles de conversions lors des opérations de comparaison.

mysql> SELECT 1 > '6x';
         -> 0
mysql> SELECT 7 > '6x';
         -> 1
mysql> SELECT 0 > 'x6';
         -> 0
mysql> SELECT 0 = 'x6';
         -> 1
  • = Egalité.
    mysql> select 1 = 0;
            -> 0
    mysql> select '0' = 0;
            -> 1
    mysql> select '0.0' = 0;
            -> 1
    mysql> select '0.01' = 0;
            -> 0
    mysql> select '.01' = 0.01;
            -> 1
    
  • <>
  • != Différent
    mysql> select '.01' <> '0.01';
            -> 1
    mysql> select .01 <> '0.01';
            -> 0
    mysql> select 'zorro' <> 'zorrro';
            -> 1
    
  • <= Inférieur ou égal
    mysql> select 0.1 <= 2;
            -> 1
    
  • < Strictement inférieur
    mysql> select 2 <= 2;
            -> 1
    
  • >= Supérieur ou égal
    mysql> select 2 >= 2;
            -> 1
    
  • > Strictement supérieur
    mysql> select 2 > 2;
            -> 0
    
  • <=> Egalité : ce opérateur s'assure qu'on ne compare pas NULL et une valeur non nulle.
    mysql> select 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1 1 0
    
  • expression BETWEEN minimum AND maximum Si l'expression est comprise entre le minimum et le maximum, alors BETWEEN retourne 1, sinon 0. Cette fonction est équivalente à l'expression (minimum <= expression AND expression <= maximum) si tous les arguments sont du même type. Le premier argument (expression) détermine la manière dont la comparaison va être faite. Si expression est une chaîne, la comparaison sera de type chaîne, et insensible à la casse. Si expression est une chaîne de type binaire, la comparaison sera de type chaîne, et sensible à la casse. Si expression est un entier, la comparaison sera de type numérique. Si expression est un nombre à virgule flottante, la comparaison sera de type numérique, à virgule flottante.
    mysql> select 1 BETWEEN 2 AND 3;
            -> 0
    mysql> select 'b' BETWEEN 'a' AND 'c';
            -> 1
    mysql> select 2 BETWEEN 2 AND '3';
            -> 1
    mysql> select 2 BETWEEN 2 AND 'x-3';
            -> 0
    
  • expression IN (value,...) Retourne 1 si expression est un membre de la liste IN, sinon retourne 0.Si toutes les valeurs de la liste IN sont constantes, alors elles sont toutes converties au type de expression, et triées. La recherche dans la listes est alors faite avec une recherche binaire. Cela signifie que la recherche est très rapide si la liste IN ne contient que des constantes. Si expression est une chaîne sensible à la casse, la comparaison avec les valeurs de IN en tiendra compte.
    mysql> select 2 IN (0,3,5,'wefwf');
            -> 0
    mysql> select 'wefwf' IN (0,3,5,'wefwf');
            -> 1
    
  • expression NOT IN (value,...) Identique à NOT (expression IN (value,...)).
  • ISNULL(expression ) Si expression est NULL, ISNULL() retourne 1, sinon 0.
    mysql> select ISNULL(1+1);
            -> 0
    mysql> select ISNULL(1/0);
            -> 1
    

    Il faut noter que la comparaison à NULL avec = sera toujours fausse!

  • COALESCE(liste) Retourne le premier élément non NULL dans la liste.
    mysql> select COALESCE(NULL,1);
            -> 1
    mysql> select ISNULL(NULL,NULL,NULL);
            -> NULL
    
  • INTERVAL(N,N1,N2,N3,...) Retourne 1 si N1 < N2 < N3 < ... < Nn . Si il existe deux valeurs i et j, telles que i < j et Ni > Nj, alors la fonction retourne faux. Toutes les valeurs sont traitées comme des nombres. Cela permet l'utilisation d'une comparaison binaire, très rapide.
    mysql> select INTERVAL(23, 1, 15, 17, 30, 44, 200);
            -> 3
    mysql> select INTERVAL(10, 1, 10, 100, 1000);
            -> 2
    mysql> select INTERVAL(22, 23, 30, 44, 200);
            -> 0
    

    Table des matières
    PrécédentNexen.netSuivant