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 ?
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 + ...
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...
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
MySQL IFNULL () avec syntaxe et exemples
Syntaxe
La syntaxe de la fonction IFNULL est:
IFNULL(expression_1,expression_2);
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 |
+------------+-----------+----------+-----------