Database
 sql >> Base de données >  >> RDS >> Database

Comment utiliser REMPLACER en SQL

Lors de l'interrogation de données avec SQL, la nécessité de manipuler des résultats basés sur des chaînes est très courante. Il existe de nombreuses options dans les principaux systèmes de bases de données relationnelles pour cette tâche. Dans cet article, nous discuterons du cas d'utilisation et des fonctionnalités de la fonction REMPLACER SQL.

Démarrer avec REPLACE

La fonctionnalité FIND and REPLACE est bien connue de tous car elle est fournie avec n'importe quel éditeur de texte. ANSI SQL offre la fonctionnalité REPLACE sous la forme d'une fonction système intégrée. Dans cet article, j'utiliserai SQL Server comme RDMS de choix.

REPLACER Paramètres de la fonction

REMPLACER (expression_chaîne, motif_chaîne, remplacement_chaîne)

String_expression est une chaîne qui sera transformée, il peut s'agir d'une seule chaîne ou d'une colonne d'une requête SQL entrante.

String_pattern est un modèle de recherche appliqué à l'expression de chaîne à remplacer.

String_replacement est une valeur de remplacement appliquée à la chaîne lorsque le string _pattern correspond à string_expression .

Examinons plusieurs exemples pour mieux comprendre la fonctionnalité REMPLACER.

Créer des exemples de données

Pour cet exemple, je vais créer une table temporaire à utiliser avec la fonction REMPLACER. Les noms de colonne correspondront aux valeurs des paramètres de la fonction.


IF OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IS NOT NULL
DROP TABLE #TEMP_REPLACE_DEMO


CREATE TABLE #TEMP_REPLACE_DEMO
(
ID INT IDENTITY(1,1),
STRING_EXPRESSION VARCHAR(2000),
STRING_PATTERN VARCHAR(200),
STRING_REPLACEMENT VARCHAR(200)
)

--REPLACE THE VALUE CAR WITH FOX
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('The red car is the fastest car in the race.','car','fox')

--REPLACE THE VALUE 4 WITH 8
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('There are 4 model ford cars in the parking lot.','4','8')

--REMOVE THE BLANK SPACE CHARACTER
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('    This sentence    has     irregular spacing              .       ',' ','')

REPLACE simple et dynamique Exemples

Maintenant que la table est chargée avec des exemples de données, examinons comment le REPLACE La fonction peut être appliquée aux données à un niveau de base, puis à un niveau plus dynamique.

Dans le premier exemple, les paramètres sont codés en dur sous forme de valeurs de chaîne dans la fonction.

--REPLACE THE VALUE CAR WITH FOX
SELECT REPLACE('The red car is the fastest car in the race.','car','fox') AS RESULT_FOR_SENTENCE

Les valeurs peuvent également être lues dynamiquement à partir du tableau. Dans ce cas, l'expression, le modèle et les valeurs de remplacement sont tous lus directement à partir de la table au lieu d'être codés en dur.

--DYNAMIC EXAMPLE FOR ALL COLUMNS IN THE TABLE.
SELECT ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) AS RESULT_FOR_TABLE
FROM #TEMP_REPLACE_DEMO

Les résultats pour ID 1 sont les mêmes que dans l'exemple ci-dessus, la seule différence est que les valeurs ont été lues à partir des colonnes individuelles.

Remplacements imbriqués

La fonction REMPLACER peut également être utilisée dans une capacité imbriquée. Cela signifie que les résultats de la fonction REPLACE interne peuvent devenir le paramètre STRING_EXPRESSION de la fonction de remplacement externe.

Voici quelques exemples de ce modèle sur les exemples de données :

--REPLACE THE VALUE CAR WITH FOX | REPLACE THE VALUE "fastest" WITH "slowest"
SELECT REPLACE(REPLACE('The red car is the fastest car in the race.','car','fox'),'fastest','slowest')


--REMOVE THE BLANK SPACE CHARACTER | REPLACE THE VALUE "irregular" with "no"
SELECT REPLACE(REPLACE('    This sentence    has     irregular spacing              .       ',' ',''),'irregular','NO')

Collation et REPLACE en SQL

Le classement est un facteur important à prendre en compte lorsque vous travaillez avec des données de chaîne et la fonction REPLACE. Le classement peut être défini à plusieurs niveaux d'une base de données, par exemple au niveau du compte ou de l'instance, au niveau de la base de données, du schéma, de la session ou de la table. Ce paramètre peut affecter le fonctionnement de la fonction REMPLACER.

Dans cet exemple, vous ne vous attendez peut-être pas à ce que le A majuscule soit remplacé par un b minuscule. Mais cela dépend du classement qui est hérité de la connexion actuelle à la base de données.

--REPLACEMENT WITHOUT EXPLICIT COLLATION.
SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION

Ce résultat fait correspondre a à A en raison de la collation.

Le paramètre de classement dans SQL Server peut être vérifié au niveau du serveur :

--VIEW CURRENT COLLATION
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation')); 
 

La clé ici est le CI qui signifie insensible à la casse. Pour appliquer la fonction REPLACE dans une capacité sensible à la casse, le paramètre string_expression peut être assemblé explicitement.

-- USE COLLATE TO MATCH CHARACTER CASING FOR REPLACE
SELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') as Explicit_Collation;

Dans cet exemple, étant donné que le paramètre string_expression est classé comme sensible à la casse, la fonction REPLACE ne remplace pas la valeur d'origine.

Résumé

La fonction REPLACE est un excellent outil pour la manipulation de chaînes de base et avancée sur plusieurs systèmes de bases de données relationnelles. Cet article a examiné l'application de base de la fonction REPLACE, comment l'utiliser de manière dynamique. Nous avons également discuté de l'utilisation de REPLACE en tant que fonction imbriquée et de la manière dont le classement peut affecter les résultats renvoyés par celle-ci.