Maison  >  Article  >  base de données  >  Tutoriel de base MySQL 6 - Fonction de flux de contrôle de fonction

Tutoriel de base MySQL 6 - Fonction de flux de contrôle de fonction

黄舟
黄舟original
2017-02-24 11:09:341086parcourir

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(
    expr1
  • ,

    expr2,expr3)

    Si
  • expr1
est VRAI (

expr1 <> 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

ou

expr3

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);

-> 0

mysql> ;>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
表达式 返回值
expr2 或expr3 返回值为一个字符串。 字符串
expr2 或expr3 返回值为一个浮点值。 浮点
expr2 或 expr3 返回值为一个整数。 整数
expr3 La valeur de retour est une chaîne.
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> ;

-> 10

mysql>

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).

    NULLIF(
  • expr1

    ,expr2)

  • if
expr1

= 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) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn