Maison > Article > base de données > Tutoriel de base MySQL 6 - Fonction de flux de contrôle de fonction
Syntaxe :
CASE valeur QUAND [comparer-valeur] ALORS résultat [QUAND [compare-value] ALORS résultat ...] [ELSE résultat] END CASE WHEN [condition] ALORS résultat [QUAND [condition] ALORS résultat ...] [SINON résultat] FIN
à Dans le résultat de retour de la première solution, value=compare-value. Le résultat de retour du deuxième scénario est le vrai résultat du premier scénario. S'il n'y a pas de valeur de résultat correspondante, le résultat renvoyé est le résultat après ELSE. S'il n'y a pas de partie ELSE, la valeur de retour est NULL.
mysql> SÉLECTIONNEZ LE CAS 1 QUAND 1 PUIS 'un'
-> -> 'un'
mysql>
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;-> ; 'vrai'
mysql>
SELECT CASE BINARY 'B'->
-> NULL
Le type de valeur de retour par défaut d'une expression CASE est tout type de collection compatible de la valeur de retour, mais la situation spécifique dépend de son contexte. S'il est utilisé dans un contexte de chaîne, renvoie la chaîne résultante. S'il est utilisé dans un contexte numérique, le résultat est renvoyé sous forme de valeur décimale, réelle ou entière. IF(expr2,expr3)
Siexpr1 <> 0 et expr1 <> NULL), alors la valeur de retour de IF() est expr2 ; Sinon, la valeur de retour est expr3. La valeur de retour de IF() est soit une valeur numérique, soit une valeur de chaîne, selon le contexte. mysql> SELECT IF(1>2,2,3);
-> 3
mysql> 1<2,'oui','non');-> 'oui'mysql> '),'non','oui');
-> 'non'si expr2
ouexpr3
Si un seul est explicitement NULL, le type de résultat de la fonction IF() est le type de résultat de l'expression non NULL.expr1 est évalué comme une valeur entière, c'est-à-dire que si vous validez une valeur à virgule flottante ou une valeur de chaîne, vous devez alors utiliser des opérations de comparaison pour la vérification.
mysql>SELECT IF(0.1,1,0);
-> 0mysql> ;>0,1,0);
-> 1
Dans le premier exemple présenté, la valeur de retour de IF(0.1) est 0 car 0,1 est converti à une valeur entière, provoquant un test de IF(0). Ce n’est peut-être pas la situation que vous souhaitez. Dans le deuxième exemple, la comparaison vérifie la valeur à virgule flottante d'origine pour voir si elle est différente de zéro. Utilisez des nombres entiers pour les résultats de comparaison. Le type de retour par défaut de IF() (ceci est important lorsqu'il est stocké dans une table temporaire) est calculé comme suit :
Expression |
Valeur de retour |
||||||||
expr2 ou
|
String | ||||||||
expr2 ou expr3 La valeur de retour est une valeur à virgule flottante. | Point flottant | ||||||||
expr2 ou expr3 La valeur de retour est un entier. | Entier |
Si expr2 et expr3 sont toutes deux des chaînes et que l'une des chaînes est sensible à la casse, le résultat renvoyé est sensible à la casse.
IFNULL(expr1,expr2)
ifexpr1 Si ce n'est pas NULL, la valeur de retour de IFNULL() est expr1 ; sinon la valeur de retour est expr2. La valeur de retour de IFNULL() est soit un nombre, soit une chaîne, selon le contexte dans lequel il est utilisé.
mysql> SELECT IFNULL(1,0);
-> 1
mysql> ;
-> 10mysql>SELECT IFNULL(1/0,10);
-> >mysql>
SELECT IFNULL(1/0,'oui');-> 'oui'
IFNULL(
expr1,expr2) La valeur du résultat par défaut est la plus "générale" des deux expressions, dans l'ordre STRING, REAL ou INTEGER. Supposons le cas d'une table basée sur une expression, ou MySQL doit stocker la valeur de retour de IFNULL() dans une table temporaire en mémoire interne : CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
Dans cet exemple, la colonne test est de type CHAR(4).
,expr2)
= expr2 est vrai, alors la valeur de retour est NULL, sinon la valeur de retour est expr1. C'est la même chose que CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. mysql>
SELECT NULLIF(1,1);->NULL
mysql> ;
-> 1
Notez que si les paramètres ne sont pas égaux, la valeur obtenue deux fois par MySQL est expr1 . Ce qui précède est le contenu du didacticiel de base MySQL 6 - Fonction de contrôle de fonction. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !