![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() |
![]() 7.3.5 Opérateurs de comparaison
Les opérations de comparaison retourne soit 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 à 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 |