sélectionnez *,if(sva=1,"male","female") comme ssva à partir de taname où sva<>""
12.2 Fonction de flux de contrôle.
CASE valeur QUAND [valeur de comparaison] ALORS résultat [QUAND [valeur de comparaison] ALORS résultat ...] [ELSE résultat] END CASE QUAND [condition] ALORS résultat [QUAND [condition] ALORS résultat ...] [ELSE résultat] FIN
Dans le résultat renvoyé du premier scénario, 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> SELECT CASE 1 WHEN 1 THEN 'un'
-> WHEN 2 THEN 'two' ELSE 'plus' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
-> 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 du 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.
SI(expr1,expr2,expr3)
Si expr1 est TRUE (expr1 <> 0 et expr1 <> NULL), 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> SELECT IF(1<2,'oui','non'
-> 'oui'
mysql> SELECT IF(STRCMP('test'); ,'test1'),'no','yes');
-> 'no'Si
un seul parmi expr2 ou expr3 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, ce qui signifie que si vous validez une valeur à virgule flottante ou une valeur de chaîne, vous devez utiliser des opérations de comparaison pour vérifier.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>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 en 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
La valeur de retour de expr2 ou expr3 est une chaîne.
chaîne
La valeur de retour de expr2 ou expr3 est une valeur à virgule flottante.
virgule flottante
La valeur de retour de expr2 ou expr3 est un entier.
entier
Si expr2 et expr3 sont toutes deux des chaînes et que l’une ou l’autre des chaînes est sensible à la casse, le résultat renvoyé est sensible à la casse.
http://blog.knowsky.com/
IFNULL(expr1,expr2)
Si expr1 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> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0, 'yes');
-> 'yes'
La valeur de résultat par défaut de IFNULL(expr1,expr2) 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 :
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test
dans cet exemple, test La colonne ; le type est CHAR(4).
NULLIF(expr1,expr2)
Si expr1 = expr2 est valable, 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> SELECT NULLIF(1,2);
-> 1
Notez que si les paramètres ne sont pas égaux, la valeur obtenue par MySQL deux fois est expr1.