Comment MySQL CONCAT IFNULL travailler avec plus de deux valeurs?

J'ai besoin de CONCAT deux champs, s'ils existent et ajouter des parenthèses autour de la deuxième champ. Sinon j'ai juste besoin de la liste de la première zone.

Voici la version simple:

SELECT id, CONCAT(name,' (',nickname,')') as name FROM user;

Aussi longtemps que le nom et surnom, les deux existent, vous devriez obtenir des résultats tels que:

1 | Adam (Alpha Dog)
2 | Bob (Bobby)
3 | Charles (Charlie)

Mais si il n'y a pas de surnom, il saute juste la chose qu' null. Par exemple: id 4, nom Doug, surnom null donne le résultat:

4 | null

Ce que j'aimerais voir est-il, pour ne citer que le nom... comme ceci:

4 | Doug

J'ai donc commencé à regarder les CONCAT IFNULL. Mais je vais avoir un moment difficile l'obtention de ce droit. Pouvez-vous m'aider?

Voici quelques exemples de choses que j'ai essayé:

SELECT id, CONCAT(IFNULL(name, ' (', nickname, ')', name) as name FROM user;
SELECT id, CONCAT(name, IFNULL(' (', nickname, ')')) as name FROM user;
IFNULL( CONCAT( '(', surnom de')"), " )
Quelque chose à souligner que m'a jeté au premier abord. Quand le pseudo est vide alors CONCAT('(',surnom,')') va aussi retourner la valeur null.

OriginalL'auteur Ryan | 2012-12-13