Dans le langage SQL la fonction CONCAT() permet de concaténer les valeur de plusieurs colonnes pour ne former qu’une seule chaîne de caractère. Cette fonction SQL peut se révéler pratique pour mettre bout-à-bout les valeurs de plusieurs colonnes pour n’en afficher qu’une. C’est donc pratique pour afficher un résultat facile à lire tout en maintenant les données dans plusieurs colonnes pour une bonne maintenance des données.
Syntaxe
Pour concaténer plusieurs chaîne de caractère, il convient d’utiliser une requête SQL avec la syntaxe suivante:
CONCAT( colonne1, colonne2 )
Il est intéressant de noter que la fonction peut prendre plus de 2 paramètres (sauf pour Oracle).
Utiliser CONCAT() dans un SELECT
La syntaxe de la fonction CONCAT() peut être utiliser dans une requête lors de l’affichage de données en utilisant une requête qui suis cette syntaxe:
SELECT id, CONCAT(colonne1, colonne2) FROM `table`
Utiliser CONCAT() dans un WHERE
Il est également possible d’utiliser cette fonction dans une clause WHERE en prenant par exemple une syntaxe similaire à celle-ci:
SELECT id FROM `table` WHERE colonne1 = CONCAT(colonne2, colonne3)
Exemples
Pour le bien de ce tutoriel, imaginons une application utilisant une table utilisateur. Cette table possède au moins 4 champs : un identifiant, le prénom, le nom et la date d’ajout (sous le format DATETIME).
Table utilisateur :
id | prenom | nom | date_inscription |
---|---|---|---|
1 | Blaise | Marais | 2013-06-05 00:00:00 |
2 | Rosette | Guillet | 2013-06-17 00:00:00 |
3 | Ferdinand | Levy | 2013-06-18 00:00:00 |
4 | Sabine | Lemaire | 2013-07-09 00:00:00 |
5 | Delphine | Devos | 2013-08-27 00:00:00 |
Concaténer le prénom et le nom
Imaginons que l’ont souhaite afficher proprement le prénom suivi du nom de famille. Pour cela, il est possible d’utiliser la fonction CONCAT() avec la requête SQL suivante:
SELECT id, CONCAT(prenom, ' ', nom) AS affichage_nom, date_inscription FROM utilisateur
Résultats :
id | affichage_nom | date_inscription |
---|---|---|
1 | Blaise Marais | 2013-06-05 00:00:00 |
2 | Rosette Guillet | 2013-06-17 00:00:00 |
3 | Ferdinand Levy | 2013-06-18 00:00:00 |
4 | Sabine Lemaire | 2013-07-09 00:00:00 |
5 | Delphine Devos | 2013-08-27 00:00:00 |
Recherche sur le prénom + le nom d’un coup
Imaginons maintenant qu’un administrateur souhaite rechercher un utilisateur en cherchant son prénom suivi de son nom. Une telle recherche permet de trouver plus facilement un membre données plutôt que de chercher séparément le prénom et le nom. Il est donc possible d’utiliser la requête suivante:
SELECT id, prenom, nom, date_inscription FROM utilisateur WHERE CONCAT(prenom, ' ', nom) LIKE 'Sabine Lemaire'
Résultat :
id | prenom | nom | date_inscription |
---|---|---|---|
4 | Sabine | Lemaire | 2013-07-09 00:00:00 |
Recherche en remplaçant un DATE en DATETIME
Prenons maintenant un exemple de recherche sur une date spécifique. La fonction CONCAT() va permettre de rechercher les utilisateurs inscrit à une certaine date. L’exemple est fictif mais illustre bien les possibilités qui sont offertes grâce à cette fonction SQL. La requête SQL suivante peut donc être utilisée:
SELECT id, prenom, nom, date_inscription FROM utilisateur WHERE date_inscription = CONCAT('2013-08-27', ' 00:00:00')
Résultat :
id | prenom | nom | date_inscription |
---|---|---|---|
5 | Delphine | Devos | 2013-08-27 00:00:00 |