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;
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser CONCAT_WS qui saute null chaînes:
oui, vous avez raison, j'ai édité et utilisé
concat_ws
OriginalL'auteur fthiella
Vous pouvez concaténer les parens et les
nickname
, et ensuite utiliser leIFNULL
de vérifier pour voir si le résultat de cette expression est NULL.Si elle est null, remplacer la valeur NULL à une chaîne vide, et puis concaténer que l'expression de la
name
colonne.REMARQUE: La fonction IFNULL est un raccourci pour:
ou l'équivalent ANSI:
Il existe d'autres approches qui fonctionnent tout aussi bien. Mais ils sont tous fondamentalement besoin de faire la même chose: vérifier si le pseudo est NUL, et puis conditionnellement inclure les parenthèses et le surnom, ou une chaîne vide.
OriginalL'auteur spencer7593
Vous pouvez utiliser un
CASE
déclaration:Voir SQL jouer avec la Démo
Ou:
Voir SQL jouer avec la Démo
Les deux donnent le même résultat:
OriginalL'auteur Taryn
Essayez ceci:
OriginalL'auteur Saharsh Shah