sql >> Database teknologi >  >> RDS >> Database

Sådan bruges REPLACE i SQL

Når du forespørger data med SQL, er behovet for at manipulere strengbaserede resultater meget almindeligt. Der er mange muligheder på tværs af de store relationelle databasesystemer til denne opgave. I denne artikel vil vi diskutere brugen og funktionaliteten af ​​REPLACE SQL-funktionen.

Kom godt i gang med REPLACE

FIND og REPLACE-funktionaliteten er velkendt for alle, da den kommer med enhver teksteditor. ANSI SQL tilbyder REPLACE-funktionaliteten i form af en indbygget systemfunktion. I denne artikel vil jeg bruge SQL Server som mit foretrukne RDMS.

REPLACE Funktionsparametre

REPLACE (string_expression, string_pattern, string_replacement)

String_expression er en streng, der vil blive transformeret, kan den være en enkelt streng eller en kolonne fra en indgående SQL-forespørgsel.

String_pattern er et søgemønster, der anvendes på det strengudtryk, der skal erstattes.

String_replacement er en erstatningsværdi, der anvendes på strengen, når strengen _mønster er matchet med streng_udtrykket .

Lad os tage et kig på flere eksempler for bedre at forstå REPLACE-funktionen.

Oprettelse af eksempeldata

Til dette eksempel vil jeg oprette en midlertidig tabel skal bruges med REPLACE-funktionen. Kolonnenavnene vil matche funktionens parameterværdier.

HVIS OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IKKE ER NULLDROP TABLE #TEMP_REPLACE_DEMOCREATE TABEL #TEMP_REPLACE_DEMO(ID INT IDENTITY(1,1),STRING_EXPRESSION VARCHAR_PAT_2000),STRING_EXPRESSION VARCHAR_PAT_000) VARCHAR(200))--ERSTAT VÆRDIBILEN MED FOXINSERT I #TEMP_REPLACE_DEMOVALUES('Den røde bil er den hurtigste bil i løbet.','bil','ræv')--ERSTAT VÆRDI 4 MED 8INSERT INTO #TEMP_REPLACE_DEMOVALUES ('Der er 4 model ford-biler på parkeringspladsen.','4','8')--FJERN DET BLANKE MELLEMRUM KARAKTERINDSÆTNING I #TEMP_REPLACE_DEMOVALUES(' Denne sætning har uregelmæssige mellemrum . ',' ','') 

Simpel og dynamisk REPLACE Eksempler

Nu hvor tabellen er fyldt med nogle eksempeldata, lad os undersøge, hvordan ERSTAT funktion kan anvendes på dataene på et grundlæggende niveau og derefter i en mere dynamisk kapacitet.

I det første eksempel er parametrene hårdkodet som strengværdier til funktionen.

--ERSTAT VÆRDIBILEN MED FOXSELECT REPLACE('Den røde bil er den hurtigste bil i løbet.','bil','ræv') SOM RESULT_FOR_SETNING 

Værdierne kan også læses dynamisk fra tabellen. I dette tilfælde læses udtrykket, mønsteret og erstatningsværdierne alle direkte fra tabellen i stedet for at blive hårdkodet.

--DYNAMISK EKSEMPEL FOR ALLE KOLONNER I TABELLEN.VÆLG ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) SOM RESULT_FOR_TABLEFFR #TEMP_REPLACE_DEMO 

Resultaterne for ID 1 er de samme som eksemplet ovenfor, den eneste forskel er, at værdierne blev læst fra de enkelte kolonner.

Indlejrede erstatninger

REPLACE-funktionen kan også bruges i en indlejret kapacitet. Dette betyder, at resultaterne af den indre REPLACE-funktion kan blive parameteren STRING_EXPRESSION for den ydre erstatningsfunktion.

Her er nogle eksempler på dette mønster på prøvedataene:

--UDSKIFT VÆRDIBILEN MED FOX | ERSTAT VÆRDIEN "hurtigst" MED "langsomst"VÆLG REPLACE(REPLACE('Den røde bil er den hurtigste bil i løbet.','bil','ræv'),'hurtigste','langsomste')--FJERN THE BLANKT RUMS KARAKTER | ERSTAT VÆRDIEN "irregular" med "no"SELECT REPLACE(REPLACE(' Denne sætning har uregelmæssig mellemrum . ',' ',''),'irregular','NO') 

Samling og REPLACE i SQL

Sortering er en vigtig faktor at overveje, når du arbejder med strengdata og REPLACE-funktionen. Sortering kan indstilles på flere niveauer i en database, såsom et konto- eller instansniveau, database-, skema-, sessions- eller tabelniveau. Denne indstilling kan påvirke, hvordan REPLACE-funktionen fungerer.

I dette eksempel forventer du muligvis ikke, at stort A erstattes med lille b. Men det afhænger af den sortering, der nedarves til den aktuelle forbindelse til databasen.

--REPLACERING UDEN EKSPLITIGT SAMLING.SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION 

Dette resultat matcher a med A på grund af sorteringen.

Sorteringsindstillingen i SQL Server kan kontrolleres på serverniveau:

--VIS AKTUEL SAMLING VÆLG KONVERT (varchar(256), SERVERPROPERTY('sortering'));

Nøglen her er CI, som står for case insensitive. For at anvende REPLACE-funktionen i en kapacitet, der skelner mellem store og små bogstaver, kan parameteren string_expression sammenstilles eksplicit.

-- BRUG COLLATE FOR AT MATCH CHARACTER CASING FOR REPLACESELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') som Explicit_Collation; 

I dette eksempel erstatter REPLACE-funktionen ikke den oprindelige værdi, fordi parameteren string_expression er sorteret som store og små bogstaver.

Oversigt

REPLACE-funktionen er et fantastisk værktøj til grundlæggende og avanceret strengmanipulation på tværs af flere relationelle databasesystemer. Denne artikel undersøgte den grundlæggende anvendelse af REPLACE-funktionen, hvordan man bruger den i en dynamisk kapacitet. Vi diskuterede også brugen af ​​REPLACE som en indlejret funktion, og hvordan sortering kan påvirke resultaterne returneret af den.


  1. SQL-referencetabel:Sådan oprettes og skrives grundlæggende forespørgsler

  2. Få tabelnavne ved hjælp af SELECT-sætning i MySQL

  3. Lagring og analyse af dokumenter på Windows filsystem med SQL Server Semantic Search – Del 2

  4. INDSÆT med ORDER på Oracle