REPLACE |
Remplacer |
|---|---|
| SQL Server | Microsoft SQL Server |
Syntaxe
| REPLACE( string1, find, replacement) |
Paramètres
| Nom | Description |
|---|---|
| string1 | Ce paramètre permet d'indiquer l'expression contenant la chaîne de caractères à traiter |
| find | Ce paramètre permet d'indiquer la chaîne de caractères à rechercher |
| replacement | Ce paramètre permet d'indiquer la chaîne de caractères de remplacement ou substitution |
Retour
| Valeur | Description |
|---|---|
| chaîne de caractères | Ces valeurs permettent d'indiquer le traitement demandé. |
Description
Cette fonction permet de remplacer des sous-chaînes de caractères dans une chaîne de caractères.
Remarques
- La fonction REPLACE permet de substituer toutes les occurrences d'une sous-chaîne de caractères dans une chaîne de caractères : Elle prend trois paramètres : la chaîne de caractères d'origine, la chaîne à rechercher, et la chaîne de remplacement. Toutes les occurrences exactes de la sous-chaîne de caractères seront remplacées sans distinction de casse.
- REPLACE est sensible à la casse, contrairement à certaines recherches SQL : Si l'on cherche à remplacer "test" par "demo" dans "Test Test test", seules les minuscules exactes "test" seront remplacées. Ce comportement dépend aussi de la collation (paramètre de classement) utilisée.
- REPLACE retourne une nouvelle chaîne, sans modifier la chaîne de caractères d'origine dans la base : Elle est non destructive : pour appliquer le changement dans la base de données, il faut l'utiliser dans une requête UPDATE. Sinon, elle agit comme une fonction de transformation temporaire dans une requête SELECT.
- On peut utiliser REPLACE de manière imbriquée pour effectuer plusieurs remplacements successifs : Par exemple, REPLACE(REPLACE(colonne, 'a', 'b'), 'c', 'd') remplace d'abord tous les a par b, puis les c par d. C'est utile pour chaîner des transformations sans créer de procédure complexe.
- La fonction REPLACE peut être utilisée dans une clause SELECT, WHERE, ou même ORDER BY : Par exemple, on peut filtrer toutes les lignes dont le champ transformé contient un certain mot après remplacement. Cela la rend polyvalente dans les requêtes dynamiques ou pour les nettoyages de texte.
- REPLACE fonctionne uniquement avec des types de données caractères : Les types compatibles incluent CHAR, VARCHAR, NCHAR, et NVARCHAR. Pour des types numériques ou TEXT, une conversion est nécessaire avec CAST ou CONVERT, sinon une erreur sera levée.
- Si la sous-chaîne de caractères à chercher (find) est vide, la fonction retourne la chaîne de caractères d'origine : Aucun remplacement n'a lieu car SQL Server ne considère pas cela comme une correspondance valide. Cela permet d'éviter des remplacements non intentionnels dans certains cas.
- La fonction REPLACE ne permet pas de gérer des expressions régulières : Elle est très simple : elle ne reconnaît que des chaînes littérales exactes. Pour des remplacements plus complexes avec des motifs, il faut utiliser SQL CLR (code .NET dans SQL Server) ou exporter les données vers un langage comme C# ou Python.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
on obtiendra le résultat suivant :
| Text | Result |
| Replace("64.6",".",",") = | 64,6 |
| Replace("M. Maltais","M.","Monsieur") = | Monsieur Maltais |
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Dimanche, le 7 juin 2015