Problème :
Vous souhaitez joindre les chaînes de deux colonnes d'une table en une seule.
Exemple :
Notre base de données a une table nommée student
avec des données dans les colonnes suivantes :id
, first_name
et last_name
.
identifiant | prénom | nom_de_famille |
---|---|---|
1 | Lora | Smith |
2 | Émile | Marron |
3 | Alex | Jackson |
4 | Martin | Davis |
Ajoutons le prénom au nom de famille de l'étudiant dans une chaîne. Utilisez un espace entre chaque nom.
Solution :
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Cette requête renvoie des enregistrements dans une colonne nommée full_name
:
nom_complet |
---|
Lora Smith |
Émile Brown |
Alex Jackson |
Martin Davis |
Discussion :
Pour ajouter une chaîne à une autre et renvoyer un résultat, utilisez le || opérateur. Cela ajoute deux chaînes de gauche et de droite ensemble et renvoie un résultat. Si vous utilisez le nom de la colonne, ne le mettez pas entre guillemets. Cependant, si vous utilisez une valeur de chaîne comme espace ou texte, placez-la entre guillemets.
Dans notre exemple, nous avons ajouté un espace à first_name
puis la colonne last_name
. Cette nouvelle colonne s'appelle full_name
.
Vous pouvez également utiliser une fonction spéciale :CONCAT. Il prend une liste de chaînes ou de noms de colonnes à joindre en tant qu'arguments :
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Les résultats sont identiques.
Cependant, la fonction CONCAT() est préférable pour récupérer les données d'une colonne avec des valeurs NULL. Pourquoi? Car, lorsqu'un NULL est inclus dans les valeurs à joindre, l'opérateur renvoie NULL en conséquence. Dans le cas de CONCAT(), NULL ne sera pas affiché.
Regardez le résultat du || opérateur si Emill n'a pas de nom de famille enregistré :
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
nom_complet |
---|
Lora Smith |
NULL |
Alex Jackson |
Martin Davis |
Regardez la fonction CONCAT pour les mêmes données :
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
nom_complet |
---|
Lora Smith |
Émile |
Alex Jackson |
Martin Davis |