In Base de données Dernière mise à jourated:
Partager sur:
Cloudways propose un hébergement cloud géré aux entreprises de toutes tailles pour héberger un site Web ou des applications Web complexes.

Je veux concatenate deux colonnes de chaîne ou plus dans SQL ? Apprenez à utiliser la fonction SQL CONCAT pour concatenate cordes.

When you query a database table, you may sometimes need to concatenate multiple text/string columns instead of retrieving data from a single column. This is helpful when you need an easier-to-interpret and readable output. 

Par exemple, vous pouvez sélectionner un full_name field by concatenating the first_name et last_name des champs. De même, vous pouvez obtenir le full_address by concatenating the street, city, state, and other necessary fields.

In SQL, you can use the CONCAT function to concatenate strings. In this guide, we’ll go over:

  • La syntaxe de la fonction SQL CONCAT
  • Exemples d'utilisation 
  • Handling NULL values in one or more columns during concatenation

Commençons!

Syntaxe de la fonction SQL CONCAT

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 denote the strings to be concatenated. These can be string literals or columns or a combination of both.

Concatenating String Literals with CONCAT

Because the CONCAT function can also be used to concatenate string literals, let’s try to code a simple example.

Here we concatenate the strings ‘Hello, ‘ and ‘world!’ as the 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)

In practice, however, you may want to concatenate the required columns in a database table and not string literals. So let’s code some examples using the CONCAT function in SQL.

Comment concilieratenate 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éonsate a database that we can use:

CREATE DATABASE db1;
use db1;

Créonsate an employees table dans la base de données db1. Pour ce faire, exécutez le CREATE TABLE statement with the following columns and corresponding data types:

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

As a first example, let’s concatenate le 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 state colonnes dans le employees tableau. Nous pouvons donc sélectionner le full_address by concatenating these three fields with a comma as the separator:

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: Create Profile URLs

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

Disons que vous avez un domaine racine https://www.example.com/ Et l'utilisateur profiles are at https://www.example.com/user. Vous pouvez générerate le profile_url en utilisant la fonction CONCAT comme ceci :

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

As seen, we get the profile URLs for all the employees:

+-----------------------------------------+
| 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)

Gestion des valeurs NULL

Dans la table des employés, tous les enregistrements ont TOUTE 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 update l'enregistrement 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.

But we’d have liked the output to be the concatenation of the 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.

Using CONCAT_WS to Handle NULL Values During Concatenation

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

LET revRegardez ce que nous avons appris :

  • When you are querying a database table to retrieve data, you may want to concatenate multiple string columns to get more helpful and easy-to-interpret query results. To do so, you can use the CONCAT function in SQL with the syntax CONCAT(string_1, string_2, ..., string_n).
  • Vous pouvez concatenate string literals, columns, or a combination of both. However, if there are one or more NULL values, the result for that particular record is NULL. To handle this, you can use CONCAT_WS avec la syntaxe CONCAT_WS(separator, string_1, string_2, ..., string_n).
  • CONCAT_WS handles NULL values more gracefully by concatenating only those strings which are present using the specified separator.

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

Partager sur:
  • 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.
  • Narendra Mohan Mittal
    Éditeur

    Narendra Mohan Mittal est une spécialiste du branding numérique polyvalente et expérimentée.ateéditeur d'essentiel et de contenu avec plus de 12 ans d'expérience. Il est médaillé d'or en M-Tech et B-Tech en informatique et ingénierie.


    Actuellement,…

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 grow.
  • L'outil de synthèse vocale qui utilise l'IA pour générerate des voix humaines réalistes.

    Essayez Murf AI
  • 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