web-dev-qa-db-fra.com

mysql IFNULL ELSE

J'ai une instruction select où je veux rendre conditionnel select comme celui-ci

IFNULL(field_a,field_a,feild_b)

de sorte qu'il vérifie le champ a si a est nul alors la sélection serait le champ b

est-ce possible ?

44
mcgrailm

Utilisez COALESCE :

SELECT COALESCE(field_a, field_b)

COALESCE est une fonction standard ANSI qui renvoie la première valeur non nulle de la liste des colonnes spécifiées, en traitant les colonnes de gauche à droite. Ainsi, dans l'exemple, si field_a est nul, field_b la valeur sera affichée. Cependant, cette fonction retournera NULL s'il n'y a pas de valeur non nulle dans les colonnes spécifiées.

Il est supporté sur MySQL (je l'ai utilisé sur 4.1), SQL Server (depuis v2000), Oracle 9i + ...

88
OMG Ponies

et une autre façon d'écorcher ce chat (flexible pour des comparaisons non seulement nulles) ...

select if(field_a is not null, field_a, field_b) from...
50
user3590489

Oui, mais ce ne sont que deux paramètres:

IFNULL(field_a,field_b)

Si field_a n'est pas nul, il sera retourné. Autrement field_b sera retourné.

Référence: IFNULL

38
Matt

Pour plus d'exemples

MySQL IFNULL () avec syntaxe et exemples

Syntaxe

La syntaxe de la fonction IFNULL est:

IFNULL(expression_1,expression_2);

exemples

   SELECT 
     name, IFNULL(businessphone, homephone) phone
 FROM
     users;



       #The above query return this result from users table

   +------------+-----------+----------+-----------
   | id        | name           | phone          |
   +------------+-----------+----------+-----------
   | 5         | Tommy Hill     | (541) 754-3009 |
   | 6         | John Smith     | (541) 754-3110 | 
   | 10        | Mark Greenspan | (541) 754-3111 | 
   | 11        | Kelvin Row     | (541) 754-3111 |
   +------------+-----------+----------+-----------
0
Developer