Retour à la liste des articles Articles
13 minutes de lecture

Fonctions de chaîne SQL : Vue d'ensemble

Une revue de toutes les fonctions de base des chaînes de caractères SQL, avec leurs définitions et des exemples.

Les fonctions de chaîne SQL manipulent les valeurs de chaîne (y compris le texte et les caractères alphanumériques). Également appelées fonctions de texte en SQL, les fonctions de chaîne prennent une ou plusieurs valeurs de chaîne en argument et renvoient une valeur de chaîne modifiée.

Consultez ce cours interactif sur Fonctions SQL standards si vous souhaitez plus de pratique que cet article n'en contient. Il propose 211 exercices sur les fonctionsSQL numériques, les fonctions de texte ou de chaîne, les fonctions de date et d'heure et les fonctions d'agrégat. Effectuez les exercices pour réviser et consolider vos connaissances, puis mettez-les à l'épreuve en répondant au quiz final.

Passons maintenant à la présentation des fonctions de chaînes de caractères de SQL.

Liste des fonctions SQL pour les chaînes de caractères

Important : en SQL, les chaînes de caractères sont placées entre guillemets simples, comme ceci : 'this is a string'. Mais que faire si nous voulons inclure un guillemet simple dans la valeur de la chaîne ? Consultez notre livre de recettes Comment échapper aux guillemets simples en SQL pour apprendre à échapper aux caractères spéciaux dans les chaînes SQL.

Remarque : les fonctions de chaînes SQL peuvent varier d'un moteur de base de données à l'autre. Vous trouverez ci-dessous une liste des fonctions disponibles dans les bases de données les plus courantes, notamment PostgreSQL, MySQL et SQL Server.

Function

Description

Further reading

|| (Concatenate)

→ Takes two or more strings.

← Concatenates (combines) them and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

< (Less than)

 > (Greater than)

 <= (Less than or equal to)

>= (Greater than or equal to)

 = (Equals)

 <> , != (Does not equal)

→ Takes two strings.

← Compares them and returns a Boolean value.

* How to compare two strings in SQL

* How to order strings alphabetically in SQL

LIKE

→ Takes one string and one regex template.

← Compares them and returns a Boolean value.

* How to use LIKE in SQL

CONCAT()

→ Takes two or more strings.

← Concatenates them and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

CONCAT_WS()

→ Takes a separator value and two or more strings.

← Concatenates them with the separator value in between and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

LEFT()

→ Takes one string and one integer (x).

← Returns x characters, starting from the left (e.g. LEFT(5) returns the first 5 characters in the string).

 

LENGTH()

(SQL Server: LEN())

→ Takes one string.

← Returns the number of characters in the string.

* How to check the length of a string in SQL

LOWER()

→ Takes one string.

← Returns this string with all characters in lower case.

* How to convert a string to lowercase in SQL

LPAD()

(SQL Server equivalents available)

→ Takes a string, an integer, and another string.

← Pads the first string value (starting from the left) with repetitions of the second string value to make the length equal to the integer.

 

LTRIM()

→ Takes one string.

← Trims all white spaces from the left and returns the resulting string.

 

POSITION()

(SQL Server: CHARINDEX())

→ Takes two strings.

← Returns the position number at which the first string is present in the second string.

 

REPEAT()

(SQL Server: REPLICATE())

→ Takes a string and an integer (x).

← Returns a string that contains x string values (e.g. REPEAT('a', 3) returns 'aaa').

 

REPLACE()

→ Takes three strings.

← Returns the first string where the value of the second string is replaced by the third string (e.g. REPLACE('Hello world', 'Hello', 'Hi') returns 'Hi World').

* How to replace part of a string in MySQL

* How to replace part of a string in SQL

* How to replace part of a string in T-SQL

REVERSE()

→ Takes one string.

← Returns the reversed value of the string.

 

RIGHT()

→ Takes one string and one integer (x).

← Returns x characters from the right (e.g. RIGHT(5) returns the last 5 characters in the string).

 

RPAD()

(SQL Server equivalents available)

→ Takes a string, an integer, and another string.

← Pads the first string (starting from the right) with repetitions of the second string value to make the length equal to the integer.

 

RTRIM()

→ Takes one string.

← Trims all white spaces from the right and returns the resulting string.

 

SPLIT_PART()

(MySQL:  SUBSTRING_INDEX()

SQL Server: STRING_SPLIT())

→ Takes two strings and an integer.

← Splits the first string based on a separator provided in the second string and returns one part as indicated by the integer.

* How to split a string in MySQL

* How to split a string in Oracle

* How to split a string in PostgreSQL

* How to split a string in SQL Server

STRING_AGG()

(MySQL: GROUP_CONCAT())

→ Takes one column of a string type and one string.

← Returns all values from the column, separated by the string.

 

SUBSTRING()

→ Takes one string and two integers (x and y).

← Returns a substring consisting of the characters between the positions x and y.

* How to extract a substring from a string in Oracle or SQLite

* How to extract substrings in PostgreSQL and MySQL

* How to extract a substring from a string in T-SQL

* A complete guide to working with substrings in SQL

* The SQL substring function in 5 examples

TRANSLATE()

(Not available in MySQL)

→ Takes three strings.

← Returns the first string where each value from the 2nd string is replaced with each value from the 3rd string. TRANSLATE('Hello World', 'ol', 'ek') will replace each occurrence of 'o' with 'e' and each occurrence of 'l' with 'k', resulting in 'Hekke Werkd'.

 

 

TRIM()

→ Takes one string.

← Returns the string with leading and trailing white spaces removed.

* How to trim strings in SQL

UPPER()

→ Takes one string.

← Returns this string with all characters in upper case.

* How to convert a string to uppercase in SQL

Fonctions des chaînes SQL - Exemples

Les sections suivantes présentent des exemples pour chaque fonction.

Concaténation avec ||

Cet opérateur prend deux chaînes ou plus et renvoie la valeur concaténée.

SELECT 'Hello' || ' World' AS concatenated;
concatenated
Hello World

Notez que si l'un des opérandes est nul, le résultat est nul :

concatenated
null

Lisez ces articles pour en savoir plus :

Comparaison avec <, >, <=, >=, =, <>, !=

Ces opérateurs prennent deux chaînes, les comparent et renvoient une valeur booléenne. Une valeur booléenne indique Vrai (1) ou Faux (0).

SELECT 'ABC' < 'XYZ' AS compare;
compare
1

Comme ABC vient avant XYZ dans l'alphabet, cette expression est évaluée à True. En SQL, les valeurs de texte sont évaluées en fonction de leur ordre alphabétique. Vous pouvez également voir si les expressions de chaînes de caractères correspondent (ou non) :

SELECT 'ABC' = 'XYZ' AS compare;
compare
0

Lisez ces articles pour en savoir plus :

LIKE

Cet opérateur prend une chaîne et un modèle utilisant une regex, les compare et renvoie une valeur booléenne. Nous utiliserons trois modèles de regex :

  • A% signifie "commence par A et est suivi d'un nombre quelconque de caractères". Add Les mots-clés suivants, ACT et AbE, correspondraient tous à cette regex.
  • A_C signifie "commence par A, est suivi d'un caractère et se termine par C". AAC Les sites abc, aDc, et alC correspondent tous à cette regex.
  • %h signifie "se termine par h". With Les adresses twenty-fifth et aah correspondraient toutes à cette expression.

Important: bien que la plupart des dialectes SQL soient insensibles à la casse, les motifs regex sont sensibles à la casse ; 'A' et 'a' sont deux caractères différents dans les regex.

SELECT 'ABC' LIKE 'A%' AS compare;
compare
1
SELECT 'ABC' LIKE 'A_C' AS compare;
compare
1
SELECT 'Hello' LIKE '%H' AS compare;
compare
0

Consultez cet article pour apprendre à utiliser LIKE en SQL.

CONCAT()

Cette fonction prend deux chaînes ou plus, les concatène (c'est-à-dire les combine en une seule chaîne) et renvoie la chaîne résultante.

SELECT CONCAT('Hello', ' World', '!') AS concat;
concat
Hello World!

Notez que cette fonction ignore les valeurs nulles, contrairement à l'opérateur || :

SELECT CONCAT('Hello', null, '!') AS concat;
concat
Hello!

Lisez ces articles pour en savoir plus :

CONCAT_WS()

Cette fonction prend une valeur de séparation et deux chaînes ou plus, les concatène avec la valeur de séparation entre les deux et renvoie la chaîne résultante.

SELECT CONCAT_WS('_','Hello', 'World') AS concat_ws;
concat_ws
Hello_World

Notez que cette fonction ignore les valeurs nulles, contrairement à l'opérateur ||.

SELECT CONCAT_WS('_','Hello', null, 'World') AS concat_ws;
concat_ws
Hello_World

Lisez ces articles pour en savoir plus :

LEFT()

Cette fonction prend une chaîne et un entier. En commençant par le début (la gauche), elle retourne autant de caractères qu'indiqué par l'entier.

SELECT LEFT('Hello', 2) AS left;
left
He

LENGTH()

Cette fonction prend une chaîne de caractères et renvoie le nombre de caractères qu'elle contient.

SELECT LENGTH('Hello') AS length;
length
5

Notez que SQL Server utilise LEN() au lieu de LENGTH().

Consultez cet article pour savoir comment vérifier la longueur d'une chaîne de caractères en SQL.

LOWER()

Cette fonction prend une chaîne et renvoie cette chaîne avec tous les caractères en minuscules.

SELECT LOWER('Hello') AS lower;
lower
hello

Consultez cet article pour apprendre comment convertir une chaîne de caractères en minuscules en SQL.

LPAD()

Cette fonction prend une chaîne, un entier et une autre chaîne. En commençant par le début (la gauche), elle remplit la première valeur de la chaîne avec des répétitions de la deuxième valeur de la chaîne pour que la longueur soit égale à l'entier.

SELECT LPAD('Hello', 9, 'ABC') AS lpad;
lpad
ABCAHello

Notez que SQL Server ne fournit pas cette fonction. Consultez les équivalents disponibles dans SQL Server.

LTRIM()

Cette fonction prend une chaîne, supprime tous les espaces blancs à gauche et renvoie la chaîne résultante.

SELECT LTRIM('   Hello World   ') as ltrim;
ltrim
Hello World

Notez que les espaces blancs à droite de la chaîne ne sont pas affectés.

POSITION()

Cette fonction prend deux chaînes et renvoie le numéro de la position à laquelle la première chaîne est présente dans la seconde.

SELECT POSITION('Wo' IN 'Hello World') as position;
position
7

Notez que SQL Server utilise CHARINDEX() au lieu de POSITION().

REPEAT()

Cette fonction prend une chaîne et un entier. Elle renvoie une chaîne qui contient autant de répétitions de la première chaîne que l'indique l'entier.

SELECT REPEAT('Hi', 3) as repeat;
repeat
HiHiHi

Notez que SQL Server utilise REPLICATE() au lieu de REPEAT().

REPLACE()

Cette fonction prend trois chaînes et renvoie la première chaîne où la valeur indiquée par la deuxième chaîne est remplacée par la troisième chaîne.

SELECT REPLACE('Hello World', 'Hello', 'Hi') as replace;
replace
Hi World

Lisez ces articles pour en savoir plus :

REVERSE()

Cette fonction prend une chaîne et renvoie la valeur inversée de la chaîne.

SELECT REVERSE('Hello') as reverse;
reverse
olleH

Cette fonction prend une chaîne et un entier. En partant de la fin de la chaîne (la droite), elle renvoie autant de caractères qu'indiqué par l'entier.

right
lo

RPAD()

Cette fonction prend une chaîne de caractères, un entier et une autre chaîne de caractères. En partant de la fin de la chaîne (la droite), elle remplit la première chaîne avec des répétitions de la deuxième chaîne pour que la longueur soit égale à l'entier.

SELECT RPAD('Hello', 9, 'ABC') AS rpad;
rpad
HelloABCA

Notez que SQL Server ne fournit pas cette fonction. Consultez les équivalents disponibles dans SQL Server.

RTRIM()

Cette fonction prend une chaîne, supprime tous les espaces blancs à la fin et renvoie la chaîne résultante.

SELECT RTRIM('   Hello World   ') as rtrim;
rtrim
Hello World

Notez que les espaces blancs situés à l'avant (à gauche) de la chaîne ne sont pas affectés.

SPLIT_PART()

Cette fonction prend deux chaînes de caractères et un entier. Elle divise la première chaîne en fonction du séparateur fourni dans la deuxième chaîne et renvoie la partie indiquée par l'entier. Le code suivant divise "Hello World" par l'espace et renvoie la première partie de la chaîne divisée :

SELECT SPLIT_PART('Hello World', ' ', 1) AS part;
part
Hello

Faisons la même chose, mais cette fois-ci, nous remplacerons l'entier par 2, ce qui renverra la deuxième partie de la chaîne :

SELECT SPLIT_PART('Hello World', ' ', 2) AS part;
part
World

Notez que MySQL utilise SUBSTRING_INDEX() au lieu de SPLIT_PART().

Notez que SQL Server utilise STRING_SPLIT() au lieu de SPLIT_PART().

Lisez ces articles pour en savoir plus :

STRING_AGG()

Cette fonction prend une colonne de type chaîne et une chaîne. Elle renvoie la concaténation de toutes les valeurs de la colonne ; chaque valeur est séparée des autres par la chaîne. Il s'agit d'une fonction d'agrégation qui peut être utilisée avec GROUP BY.

Voici la table des fruits que nous utiliserons dans cet exemple :

nameamount
Apple1
Kiwi2
Banana3
SELECT STRING_AGG(name, ';') AS string_agg
FROM fruits;
string_agg
Apple;Kiwi;Banana

Notez que MySQL utilise GROUP_CONCAT() au lieu de STRING_AGG().

SUBSTRING()

Cette fonction prend une chaîne de caractères et deux entiers. Elle renvoie une sous-chaîne composée des caractères situés entre les positions indiquées par les entiers.

SELECT SUBSTRING('Hello World', 2, 5) AS substring;
substring
ello

Lisez ces articles pour en savoir plus :

TRANSLATE()

Cette fonction prend trois chaînes et retourne la première chaîne où les valeurs indiquées par la deuxième chaîne sont remplacées par les valeurs indiquées par la troisième chaîne.

SELECT TRANSLATE('Hello World', 'Ho', 'he') as translate;

Cet exemple prend une valeur de chaîne donnée et remplace H par h et o par e.

translate
helle Werld
SELECT TRANSLATE('abc def', 'ad', 'xy') as translate;

L'exemple ci-dessus prend une valeur de chaîne donnée et remplace a par x et d par y.

translate
xbc yef

Notez que MySQL ne fournit pas cette fonction. Consultez les équivalents disponibles dans MySQL.

TRIM()

Cette fonction prend une chaîne et renvoie la chaîne avec les espaces blancs de début et de fin supprimés.

SELECT TRIM('   Hello World   ') AS trim;
trim
Hello World

Consultez cet article pour apprendre à découper les chaînes de caractères en SQL.

UPPER()

Cette fonction prend une chaîne et retourne cette chaîne avec tous les caractères en majuscules.

SELECT UPPER('Hello') AS upper;
upper
HELLO

Consultez cet article pour apprendre comment convertir une chaîne en majuscules en SQL.

Autres fonctions SQL

SQL propose de nombreuses fonctions différentes : fonctions numériques, fonctions d'agrégation, fonctions de chaîne de caractères, fonctions de date et d'heure, etc. Pour plus d'informations sur ces fonctions, consultez notre livre de recettes SQL et nos articles de blog.

Vous pouvez également consulter cette feuille de contrôle gratuite sur Fonctions SQL standards. Vous pouvez la télécharger, l'imprimer et la garder à portée de main pendant que vous travaillez et apprenez. Une fois de plus, nous vous encourageons à consulter notre cours sur Fonctions SQL standards si vous souhaitez vraiment vous exercer. Bon apprentissage !