Database
 sql >> Base de données >  >> RDS >> Database

Comment concaténer des chaînes en SQL

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