21st Jun 2024 13 minutes de lecture Fonctions de chaîne SQL : Vue d'ensemble Martyna Sławińska fonctions de chaîne de caractères manipulation de chaînes de caractères Table des matières Liste des fonctions SQL pour les chaînes de caractères Fonctions des chaînes SQL - Exemples Concaténation avec || Comparaison avec <, >, <=, >=, =, <>, != LIKE CONCAT() CONCAT_WS() LEFT() LENGTH() LOWER() LPAD() LTRIM() POSITION() REPEAT() REPLACE() REVERSE() RIGHT() RPAD() RTRIM() SPLIT_PART() STRING_AGG() SUBSTRING() TRANSLATE() TRIM() UPPER() Autres fonctions SQL 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 : Comment concaténer des chaînes de caractères en SQL. Comment concaténer des chaînes de caractères et des valeurs NULL dans SQL Server. 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 : Comment comparer deux chaînes de caractères en SQL. Comment classer des chaînes de caractères par ordre alphabétique en SQL. 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 : Comment concaténer des chaînes de caractères en SQL. Comment concaténer des chaînes de caractères et des valeurs NULL dans SQL Server. 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 : Comment concaténer des chaînes de caractères en SQL. Comment concaténer des chaînes de caractères et des valeurs NULL dans SQL Server. 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 : Comment remplacer une partie d'une chaîne de caractères dans MySQL. Comment remplacer une partie d'une chaîne de caractères en SQL. Comment remplacer une partie d'une chaîne de caractères en T-SQL. REVERSE() Cette fonction prend une chaîne et renvoie la valeur inversée de la chaîne. SELECT REVERSE('Hello') as reverse; reverse olleH RIGHT() 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 : Comment diviser une chaîne de caractères dans MySQL. Comment diviser une chaîne de caractères dans Oracle. Comment diviser une chaîne de caractères dans PostgreSQL. Comment diviser une chaîne de caractères dans SQL Server. 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 : Comment extraire une sous-chaîne d'une chaîne de caractères dans Oracle ou SQLite. Comment extraire des sous-chaînes dans PostgreSQL et MySQL. Comment extraire une sous-chaîne d'une chaîne en T-SQL. Un guide complet pour travailler avec les sous-chaînes en SQL. La fonction substring de SQL en 5 exemples. 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 ! Tags: fonctions de chaîne de caractères manipulation de chaînes de caractères