Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Base de données Dernière mise à jour : 30 août 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Vous souhaitez concaténer deux ou plusieurs colonnes de chaînes en SQL ? Découvrez comment utiliser la fonction SQL CONCAT pour concaténer des chaînes.

Lorsque vous interrogez une table de base de données, vous devrez parfois concaténer plusieurs colonnes de texte/chaîne au lieu de récupérer les données d'une seule colonne. Ceci est utile lorsque vous avez besoin d’une sortie plus facile à interpréter et à lire. 

Par exemple, vous pouvez sélectionner un full_name champ en concaténant le first_name et last_name des champs. De même, vous pouvez obtenir le full_address en concaténant la rue, la ville, l'état et d'autres champs nécessaires.

En SQL, vous pouvez utiliser la fonction CONCAT pour concaténer des chaînes. Dans ce guide, nous passerons en revue :

  • La syntaxe de la fonction SQL CONCAT
  • Exemples d'utilisation 
  • Gestion des valeurs NULL dans une ou plusieurs colonnes lors de la concaténation

Commençons!

Syntax of the SQL CONCAT Function

La syntaxe pour utiliser la fonction SQL CONCAT est la suivante :

CONCAT(string_1, string_2, ..., string_n);

Ici, string_1, string_2, ..., string n désignent les chaînes à concaténer. Il peut s'agir de chaînes littérales ou de colonnes, ou d'une combinaison des deux.

Concatenating String Literals with CONCAT

Étant donné que la fonction CONCAT peut également être utilisée pour concaténer des chaînes littérales, essayons de coder un exemple simple.

Ici, nous concaténons les chaînes « Bonjour » et « monde ! » comme le greeting chaîne:

SELECT CONCAT('Hello, ', 'world!') AS greeting;

L'exécution de la requête ci-dessus vous donnera le résultat suivant :

+---------------+
| greeting      |
+---------------+
| Hello, world! |
+---------------+
1 row in set (0.00 sec)

En pratique, cependant, vous souhaiterez peut-être concaténer les colonnes requises dans une table de base de données et non les chaînes littérales. Codons donc quelques exemples en utilisant la fonction CONCAT en SQL.

How to Concatenate Columns in SQL

Passons ensuite à l'interrogation d'une table de base de données.

📑 Tous les exemples de requêtes de ce tutoriel ont été exécutés sur un MySQL table de base de données. Mais vous pouvez également suivre dans un autre SGBDR de votre choix.

Création d'une table de base de données avec des enregistrements

Créons une base de données que nous pouvons utiliser :

CREATE DATABASE db1;
use db1;

Créons un employees table dans la base de données db1. Pour ce faire, exécutez le CREATE TABLE instruction avec les colonnes suivantes et les types de données correspondants :

CREATE TABLE employees (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    street VARCHAR(100),
    city VARCHAR(50),
    state VARCHAR(2),
    username VARCHAR(20)
);

Ensuite, insérons quelques enregistrements dans le employees table:

INSERT INTO employees (first_name, last_name, street, city, state, username) VALUES
    ('John', 'Smith', '123 Main St', 'New York', 'NY', 'john123'),
    ('Alice', 'Johnson', '456 Elm St', 'Boston', 'MA', 'alice456'),
    ('Bob', 'Williams', '789 Oak St', 'Chicago', 'IL', 'bob789'),
    ('Mary', 'Davis', '321 Pine St', 'Houston', 'TX', 'mary456'),
    ('James', 'Brown', '555 Cedar St', 'Seattle', 'WA', 'james789'),
    ('Emily', 'Jones', '777 Maple St', 'Atlanta', 'GA', 'emily123'),
    ('Michael', 'Miller', '999 Birch St', 'Miami', 'FL', 'michael456'),
    ('Jessica', 'Wilson', '111 Walnut St', 'Dallas', 'TX', 'jessica789'),
    ('William', 'Taylor', '222 Cherry St', 'Denver', 'CO', 'william123'),
    ('Sarah', 'Martinez', '444 Pine St', 'Phoenix', 'AZ', 'sarah456');

1 Exemple: Afficher les noms complets

Comme premier exemple, concaténons les first_name les nouveautés last_name colonnes pour obtenir le full_name. Pour ce faire, nous pouvons utiliser la fonction SQL CONCAT dans la requête SELECT comme indiqué :

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

Vous devriez obtenir la sortie suivante:

+----------------+
| full_name      |
+----------------+
| John Smith     |
| Alice Johnson  |
| Bob Williams   |
| Mary Davis     |
| James Brown    |
| Emily Jones    |
| Michael Miller |
| Jessica Wilson |
| William Taylor |
| Sarah Martinez |
+----------------+
10 rows in set (0.00 sec)

En plus de la first_name les nouveautés last_name, notez que nous avons également utilisé l'espace comme séparateur, spécifié par la chaîne littérale « ».

2 Exemple: Construire des adresses

Prenons maintenant un autre exemple.

Nous avons les street, cityet au state colonnes dans le employees tableau. Nous pouvons donc sélectionner le full_address en concaténant ces trois champs avec une virgule comme séparateur :

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Voici la sortie:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| 456 Elm St, Boston, MA    |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

3 Exemple: Créer des URL de profil

Rappelons que nous avons un username dans le champ employees tableau.

Disons que vous avez un domaine racine https://www.example.com/ et les profils d'utilisateurs sont à https://www.example.com/user. Vous pouvez générer le profile_url en utilisant la fonction CONCAT comme ceci :

SELECT CONCAT('https://www.example.com/user/', username) AS profile_url 
FROM employees;

Comme vu, nous obtenons les URL de profil de tous les employés :

+-----------------------------------------+
| profile_url                             |
+-----------------------------------------+
| https://www.example.com/user/john123    |
| https://www.example.com/user/alice456   |
| https://www.example.com/user/bob789     |
| https://www.example.com/user/mary456    |
| https://www.example.com/user/james789   |
| https://www.example.com/user/emily123   |
| https://www.example.com/user/michael456 |
| https://www.example.com/user/jessica789 |
| https://www.example.com/user/william123 |
| https://www.example.com/user/sarah456   |
+-----------------------------------------+
10 rows in set (0.00 sec)

Handling NULL Values

Dans la table des employés, tous les enregistrements ont tous les champs. Mais que se passe-t-il si vous avez un ou plusieurs champs avec des valeurs NULL ?

Prenons un exemple pour ce cas. Ici nous mettre à jour le dossier correspondant à ID = 2 pour mettre la colonne rue à NULL :

UPDATE employees
SET street = NULL
WHERE ID = 2; -- Update the record with ID 2
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Nous utilisons maintenant CONCAT pour sélectionner le full_address:

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Voici la sortie:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| NULL                      |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

Notez que le deuxième élément du jeu de résultats est NULL.

Mais nous aurions aimé que le résultat soit la concaténation des city les nouveautés state colonnes pour avoir une idée approximative de l’adresse. Lorsque vous avez de telles valeurs NULL, vous pouvez utiliser CONCAT_WS comme alternative à la fonction CONCAT. Voyons voir comment ça fonctionne.

Utilisation de CONCAT_WS pour gérer les valeurs NULL pendant la concaténation

CONCAT_WS est une alternative à CONCAT qui peut être utilisée si vous pensez qu'un ou plusieurs champs contiennent des valeurs NULL.

Vous pouvez utiliser la fonction CONCAT_WS comme ceci :

CONCAT_WS(separator, string_1, string_2,..., string_n)

Exécutez maintenant la requête SELECT suivante :

SELECT CONCAT_WS(', ', street, city, state) AS full_address FROM employees;

Vous obtiendrez le résultat suivant :

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| Boston, MA                |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.01 sec)

Comme on le voit, pour le deuxième élément du jeu de résultats, nous obtenons « Boston MA » comme street le champ est NULL.

⚠ Lorsque vous utilisez CONCAT_WS, c'est conditions pour spécifier le séparateur. Si vous ne spécifiez pas de séparateur, le résultat est NULL si une ou plusieurs colonnes sont NULL (similaire à CONCAT).

Récapitulation

Passons en revue ce que nous avons appris :

  • Lorsque vous interrogez une table de base de données pour récupérer des données, vous souhaiterez peut-être concaténer plusieurs colonnes de chaînes pour obtenir des résultats de requête plus utiles et plus faciles à interpréter. Pour ce faire, vous pouvez utiliser la fonction CONCAT en SQL avec la syntaxe CONCAT(string_1, string_2, ..., string_n).
  • Vous pouvez concaténer des chaînes littérales, des colonnes ou une combinaison des deux. Toutefois, s'il existe une ou plusieurs valeurs NULL, le résultat pour cet enregistrement particulier est NULL. Pour gérer cela, vous pouvez utiliser CONCAT_WS avec la syntaxe CONCAT_WS(separator, string_1, string_2, ..., string_n).
  • CONCAT_WS gère les valeurs NULL plus gracieusement en concaténant uniquement les chaînes présentes à l'aide du séparateur spécifié.

Pour un aperçu rapide des commandes SQL et de leur utilisation, vous pouvez ajouter ceci à vos favoris Aide-mémoire SQL.

  • Bala Priya C
    Auteur
    Bala Priya est un développeur et rédacteur technique indien avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, etc. lire la suite
  • Narendra Mohan Mittal
    Éditeur

    Narendra Mohan Mittal est stratège principal en stratégie de marque numérique et éditeur de contenu avec plus de 12 ans d'expérience polyvalente. Il est titulaire d'un M-Tech (médaillé d'or) et d'un B-Tech (médaillé d'or) en informatique et ingénierie.


    ... lire la suite
Merci à nos commanditaires
Plus de bonnes lectures sur la base de données
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder