Fonctions standards chaines de caractères en SQL Complément de cours
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
Base de données 4STI page 1/4
Fonctions standards chaines de caractères en SQL Complément de cours
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
Utiliser length() dans un SELECT
Syntaxe
Cette fonction SQL s’utilise avec une structure suivante :
SELECT LENGTH('exemple');
Résultat : 7
Exemple
Pour le bien de ce tutoriel, nous allons considérer une table utilisateur qui contient le login, la ville et le numéro de
téléphone d’un utilisateur.
Table utilisateur :
id login ville telephone
1 aa Paris 123
2 paul Lyon 06.00.00.00.00
3 leolebeau Lyon 0600000000
4 john Lille 1
Connaître la longueur du login
Il est possible de connaître la longueur du login de chaque utilisateur grâce à la fonction LENGTH(). Cette longueur peut
être affichée en utilisant une requête SQL telle que celle-ci:
SELECT id, login, LENGTH(login) AS login_length, ville, telephone
FROM utilisateur
Résultat :
id login login_length ville telephone
1 aa 2 Paris 123
2 paul 4 Lyon 06.00.00.00.00
3 leolebeau 9 Lyon 0600000000
4 john 4 Lille 1
Extraire les utilisateur avec un login inférieur à 5 caractères
Imaginons que pour une raison quelconque, les utilisateurs ayant un login de moins de 5 caractères ne soient pas assez
sécurisés. Il est possible d’extraire la liste de ces utilisateurs avec la fonction LENGTH(), comme le montre la requête
suivante:
SELECT id, login, ville, telephone
FROM utilisateur
WHERE LENGTH(login) < 5
Résultat :
id login ville telephone
1 aa Paris 123
2 paul Lyon 06.00.00.00.00
4 john Lille 1
Base de données 4STI page 2/4
Fonctions standards chaines de caractères en SQL Complément de cours
Extraire les utilisateurs avec un numéro de téléphone inférieur à 10 caractères
Si un numéro de téléphone fait moins de 10 caractères, c’est peut-être parce que l’utilisateur l’a mal indiqué. Il est donc
possible d’extraire ces utilisateurs avec la requête SQL suivante :
SELECT id, login, ville, telephone
FROM utilisateur
WHERE LENGTH(telephone) < 10
Résultat :
id login ville telephone
1 aa Paris 123
4 john Lille 1
Utiliser SUBSTR() dans un SELECT
Exemple de requête
Cette fonction peut s’utiliser dans une requête SQL en utilisant une syntaxe comme celle-ci:
SELECT SUBSTR(nom_colonne, 3, 10)
FROM table
Dans cet exemple, le contenu de la colonne “nom_colonne” sera tronqué à partir du 4ème caractère sur 10 caractères.
Exemple
Imaginons une base de données qui contient une liste de pays en français et en anglais.
Table pays :
id nom_fr_fr nom_en_gb
1 FRANCE FRANCE
2 ESPAGNE SPAIN
3 ALLEMAGNE GERMANY
4 CHINE CHINA
Une requête SQL va être construite pour extraire les informations suivantes :
• L’identifiant du pays
• Le nom du pays en français
• Les 2 premiers caractères du nom en français (soit à partir du 1er caractère et sur une longueur de 2 caractères)
• Tout le nom en français, sans les 2 premiers caractères (soit tout le nom à partir du 3ème caractère)
Pour récupérer toutes ces données, il convient d’utiliser la requête SQL suivante :
SELECT id, nom_fr_fr, SUBSTR(nom_fr_fr, 1, 2), SUBSTR(nom_fr_fr, 3)
FROM pays
Cette requête va retourner les résultats suivants :
id nom_fr_fr SUBSTR(nom_fr_fr, 1, 2) SUBSTR(nom_fr_fr, 3)
1 FRANCE FR ANCE
2 ESPAGNE ES PAGNE
3 ALLEMAGNE AL LEMAGNE
4 CHINE CH INE
Ce tableau de résultat démontre bien qu’il est possible de segmenter un texte simplement.
Base de données 4STI page 3/4
Fonctions standards chaines de caractères en SQL Complément de cours
Utiliser RIGHT() ou LEFT() dans un SELECT
Dans le langage SQL la fonction RIGHT() permet d’extraire la fin d’une chaîne de caractères en définissant la longueur
souhaité. La fonction permet de tronquer une chaîne en partant de la fin, sur le nombre de caractères souhaités.
Syntaxe
La fonction s’utilise dans une requête SQL en respectant la syntaxe ci-dessous :
SELECT RIGHT( chaine, longueur );
Le caractère “chaine” correspond à la chaîne de caractère d’entré, tandis que le paramètre “longueur” est un nombre qui
correspond à la longueur maximum de la chaîne de retour.
Exemple
Les requêtes ci-dessous mettent en scène la fonction RIGHT() dans plusieurs exemples types d’utilisation avec leurs
résultats :
SELECT RIGHT('abcdefghij', 3); -- résultat : 'hij'
SELECT RIGHT('abcdefghij', 40); -- résultat : 'abcdefghij'
SELECT RIGHT('abcdefghij', 0); -- résultat : ''
SELECT RIGHT('abcdefghij', -1); -- résultat : ''
SELECT RIGHT('abcdefghij', NULL); -- résultat : NULL
Les exemples montrent que le résultat retourne la fin des chaînes de caractères et ne dépassera jamais le nombre de
caractères indiqués. Par ailleurs, si la chaîne d’entré est plus petit que la limite, le résultat ne sera pas tronqué.
Cette fonction peut s’avérer utile pour obtenir par exemple les derniers caractères pour un champ qui est formaté d’une
certaines façon, tel que :
• Une colonne qui contient une date au format AAAA-MM-JJ : la fonction peut aider à extraire uniquement le mois et le jour au
format MM-JJ
• Une colonne qui contient un prix formaté avec à chaque fois 2 décimales après la virgule : la fonction RIGHT peut aider à
extraire uniquement les centimes
Base de données 4STI page 4/4