Retour à la liste des articles Articles
7 minutes de lecture

5 fonctions SQL pour la manipulation des chaînes de caractères

Les fonctions SQL utilisées pour manipuler les chaînes de caractères, communément appelées fonctions de chaîne, font partie des outils les plus importants de SQL. Dans ce billet, nous allons examiner cinq façons d'effectuer diverses opérations sur les chaînes de caractères.

Il existe de nombreuses fonctions SQL qui vous permettent de "modifier" des données de type chaîne. Au fur et à mesure que vous apprendrez le SQL, vous verrez combien elles sont utiles. Certaines fonctions SQL suppriment les espaces ou les caractères inutiles, d'autres vous indiquent la longueur d'une chaîne. Ces fonctions vous offrent de nombreuses possibilités de transformer et de travailler avec des chaînes de caractères, ce qui rend votre code plus efficace. Elles rendent également le code plus facile à comprendre

.

Tout développeur SQL devrait savoir quelles fonctions SQL sont utilisées pour manipuler les chaînes de caractères. Dans cet article, je vais vous aider à démarrer en vous expliquant cinq fonctions SQL courantes pour les chaînes de caractères

.

Fonctions SQL pour les chaînes de caractères : CONCAT

CONCAT(first_char, second_char, ... n_char)

La fonction de chaîne SQL CONCAT combine deux chaînes de caractères ou plus en une seule chaîne. Toutes les entrées entry_char

doivent être de type CHAR, VARCHAR ou NCHAR.

J'ai écrit deux exemples simples qui montrent l'utilité de cette commande :

SELECT CONCAT ('LearnSQL is good', ' and great', ' and fantastic!') 
FROM DUAL;
--------------------

LearnSQL is good and great and fantastic!

Comme vous pouvez le voir, CONCAT a pris les trois chaînes que j'ai entrées - 1) 'LearnSQL is good'; 2) 'and great'; 3) 'and fantastic!' - et les a combinées en une nouvelle chaîne SQL

. Cette technique est très utile lorsque nous voulons présenter les informations de la base de données de manière lisible.

Supposons que nous ayons une table appelée patient qui stocke les numéros d'identification, les noms, les dates d'admission et les maladies des patients. Nous voulons afficher les données de chaque patient de la manière la plus compréhensible possible. La meilleure option consiste à créer une phrase, comme indiqué ci-dessous :

SELECT CONCAT(name, ' was admitted to St. Ann's Hospital on ', date, ' with ', illness) 
FROM patient
WHERE patient_id = 447;
------------------

John Doe was admitted to St. Ann’s Hospital on 21-11-2016 with flu.

Dans de nombreux systèmes de bases de données, la fonction de chaîne de caractères SQL CONCAT peut être remplacée par le symbole de concaténation de chaînes de caractères "||". Cet opérateur est compatible avec les normes SQL, mais il ne fonctionne pas dans toutes les bases de données - par exemple, dans SQL Server, vous devez utiliser "+".

Fonctions SQL String : REPLACE

REPLACE(entry_char, string_searching, string_replace)

<pUne autre façon de manipuler les chaînes de caractères en SQL est REPLACE. Cette fonction vous permet de remplacer ou de supprimer sélectivement des données à l'intérieur d'une chaîne SQL. Elle renvoie un entrée_chaîne où la valeur de string_searching est rempl remplacée par string_replace. Si la valeur chaîne_remplacer est nulle, alors toutes les valeurs correspondant à recherche_chaîne est supprimée de la chaîne d'entrée.

Voyons deux exemples de l'utilisation de REPLACE. Supposons que nous voulions mettre à jour une partie d'un enregistrement :

SELECT REPLACE ('LearnSQL is good!', 'good', 'great!') 
FROM DUAL;
---------------------

LearnSQL is great!

Comme vous pouvez le voir, REPLACE a modifié la valeur good dans LearnSQL is good!” to “great. L'enregistrement se lit maintenant comme suit LearnSQL is great!

Essayons maintenant une démonstration plus pratique de la manipulation des chaînes de caractères avec cette fonction. Disons que vous disposez d'une table appelée registry qui stocke les noms des employés. Une employée nommée Jeanne (la seule Jeanne de la table, pour les besoins de cette illustration) s'est mariée et a changé de nom de famille. La fonction REPLACE nous permet de mettre à jour son enregistrement très facilement :

UPDATE registry
SET name = REPLACE(name, 'Kowalski', 'Novak')
WHERE name LIKE 'Jannet%'

Jannet Kowalski est maintenant officiellement Jannet Novak, grâce à la fonction REPLACE.

Fonctions SQL String : SUBSTR

Il existe encore plus de fonctions SQL utilisées pour manipuler les chaînes de caractères. SUBSTR(char, position, length)

SUBSTR prend une partie (ou une sous-chaîne) d'une chaîne SQL et la renvoie. Char définit ce que nous voulons utiliser comme source de la sous-chaîne ; dans l'exemple suivant, il s'agit de LearnSQL. L'élément position est le point de départ de la sous-chaîne ; 6 caractères à partir du début, dans ce cas. Enfin, la longueur définit la longueur de la sous-chaîne. En combinant le tout, on obtient :

SELECT SUBSTR('LearnSQL',6,3) 
FROM DUAL;
-------------------

SQL

Cette fonction de chaîne SQL est largement utilisée pour supprimer des caractères d'une grande chaîne et pour ajouter des caractères à une chaîne. Disons que vous avez une table appelée products qui contient une liste de produits. L'identifiant du produit est composé de lettres qui identifient le type de produit et de chiffres qui indiquent la quantité en stock.

id
----------
AA91
AA55
BG66
WP21

Supposons maintenant que vous souhaitiez ajouter un trait de soulignement entre les lettres et les chiffres de l'identifiant du produit. Avec CONCAT et SUBSTR, c'est facile :

UPDATE products SET id = CONCAT(SUBSTR(id, 1, 2), '_', SUBSTR(id, 3);
id
----------
AA_91
AA_55
BG_66
WP_21

Examinons ces commandes. UPDATE modifiera l'identifiant du produit.
products table. CONCAT relie les portions de chaîne créées par deux fonctions SUBSTR. Notez que la deuxième fonction SUBSTR n'a pas de troisième paramètre - elle inclura tous les caractères situés après la position spécifiée dans le deuxième paramètre.

N'oubliez pas que tous les systèmes de base de données n'utilisent pas le même nom pour les fonctions de chaîne du serveur SQL. Dans SQL Server, la fonction SUBSTR est appelée SUBSTRING, mais la syntaxe est la même. Cliquez ici pour en savoir plus sur SQL Server.

Fonctions de chaîne SQL : ASCII et CHR

ASCII(single_character)
CHR(character_code)

ASCII et CHR sont deux fonctions SQL totalement opposées. ASCII examine un seul caractère et renvoie son code numérique ASCII (par exemple, "V" vaut 86). Si une chaîne de caractères est saisie, cette fonction SQL de chaîne renvoie une valeur pour le premier caractère et ignore le reste. CHR, en revanche, prend le numéro de code ASCII et renvoie le caractère approprié. Donnez-lui un 86, et elle renverra un "V".

Imaginons que vous deviez trouver toutes les personnes dont le nom de famille commence par un A. Vous avez décidé d'utiliser le code ASCII pour y parvenir. Tout d'abord, trouvons l'équivalent ASCII de "A".

SELECT ASCII('A')
FROM DUAL;
-------------------

65

Le 65 est donc notre numéro. Maintenant, nous pouvons trouver tous les enregistrements nécessaires :

SELECT *
FROM workers
WHERE SUBSTR(second_name, 1, 1) = CHR(65);
first_name    second_name     age
---------    ------------     ------
Garry         Amundsen        41
Adam          Anderson        55
Elizabeth     Alanfry         33

Fonctions SQL String : TRIM

TRIM( [ [ LEADING | TRAILING | BOTH ] character FROM ] edit_char )

TRIMLa principale tâche de SUBSTR est de supprimer tous les caractères spécifiés caractères de la partie de début (en tête), de la partie finale (arrière), ou des deux parties (les deux) d'une chaîne de caractères spécifique (edit_char).

Cette instruction comporte de nombreux paramètres. Tout d'abord, vous devez choisir la partie de la chaîne où vous souhaitez couper des caractères. Si vous ne le faites pas, TRIM supprimera les caractères définis à la fois au début et à la fin de edit_char. Ensuite, vous devez lui indiquer ce que caractères à supprimer. Si ce paramètre est omis, la fonction supprimera uniquement les caractères d'espacement. Enfin, vous devez définir la chaîne de caractères.

Voyons ce que cela donne en pratique :

Supprimez les espaces de début et de fin de chaîne :

SELECT TRIM('    SQL2017    ')
FROM DUAL;
------------------

“SQL2017”
SELECT TRIM ('' FROM  '   SQL2017   ')
FROM DUAL;
------------------

"SQL2017"

Supprimez le '2017' de fin de chaîne :

SELECT TRIM (TRAILING '2017' FROM 'SQL2017')
FROM DUAL;
------------------

"SQL"

Supprimez le '20' de tête et de queue de la chaîne de caractères :

SELECT TRIM (BOTH '20' FROM '2017LearnSQL20')
FROM DUAL;
------------------

"17LearnSQL"

Malheureusement, TRIM n'a pas la même syntaxe d'une base de données à l'autre. Dans SQL Server, TRIM ne prend que le paramètre edit_char et supprime tous les espaces aux deux extrémités de la chaîne. LTRIM supprime les espaces de tête et RTRIM supprime les espaces de queue.

Conclusion

Il existe de nombreuses fonctions SQL qui nous permettent de manipuler les chaînes de caractères. Ce que nous avons abordé dans cet article n'est qu'une petite partie de ce que les fonctions SQL peuvent faire. Pour apprendre les fonctions SQL de chaîne de caractères en détail, consultez notre cours en ligne LearnSQL.fr's Fonctions SQL standards.