Database
 sql >> Datenbank >  >> RDS >> Database

So verwenden Sie REPLACE in SQL

Beim Abfragen von Daten mit SQL ist es sehr häufig erforderlich, Zeichenfolgen-basierte Ergebnisse zu manipulieren. Für diese Aufgabe gibt es in den wichtigsten relationalen Datenbanksystemen viele Optionen. In diesem Artikel besprechen wir den Anwendungsfall und die Funktionalität der REPLACE SQL-Funktion.

Erste Schritte mit REPLACE

Die FIND- und REPLACE-Funktionalität ist jedem wohlbekannt, da sie mit jedem Texteditor geliefert wird. ANSI SQL bietet die REPLACE-Funktionalität in Form einer eingebauten Systemfunktion. In diesem Artikel werde ich SQL Server als bevorzugtes RDMS verwenden.

RERSETZEN Funktionsparameter

REPLACE (string_expression, string_pattern, string_replacement)

String_expression eine Zeichenfolge ist, die transformiert wird, kann es sich um eine einzelne Zeichenfolge oder eine Spalte aus einer eingehenden SQL-Abfrage handeln.

String_pattern ist ein Suchmuster, das auf den zu ersetzenden Zeichenfolgenausdruck angewendet wird.

String_replacement ist ein Ersatzwert, der auf die Zeichenfolge angewendet wird, wenn string _pattern wird mit string_expression abgeglichen .

Sehen wir uns einige Beispiele an, um die REPLACE-Funktionalität besser zu verstehen.

Beispieldaten erstellen

Für dieses Beispiel werde ich eine temporäre Tabelle erstellen mit der REPLACE-Funktion verwendet werden. Die Spaltennamen stimmen mit den Parameterwerten der Funktion überein.


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              .       ',' ','')

Einfaches und dynamisches REPLACE Beispiele

Nachdem die Tabelle nun mit einigen Beispieldaten geladen wurde, sehen wir uns an, wie die REPLACE Funktion auf die Daten auf einer grundlegenden Ebene und dann in einer dynamischeren Kapazität angewendet werden.

Im ersten Beispiel sind die Parameter als Stringwerte für die Funktion fest codiert.

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

Die Werte können auch dynamisch aus der Tabelle gelesen werden. In diesem Fall werden Ausdruck, Muster und Ersetzungswerte alle direkt aus der Tabelle gelesen, anstatt fest codiert zu sein.

--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

Die Ergebnisse für ID 1 sind die gleichen wie im obigen Beispiel, der einzige Unterschied besteht darin, dass die Werte aus den einzelnen Spalten gelesen wurden.

Verschachtelte Ersetzungen

Die REPLACE-Funktion kann auch verschachtelt verwendet werden. Das bedeutet, dass die Ergebnisse der inneren REPLACE-Funktion zum STRING_EXPRESSION-Parameter der äußeren Ersetzungsfunktion werden können.

Hier sind einige Beispiele für dieses Muster in den Beispieldaten:

--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')

Sortieren und RERSETZEN in SQL

Die Sortierung ist ein wichtiger Faktor, der bei der Arbeit mit Zeichenfolgendaten und der REPLACE-Funktion berücksichtigt werden muss. Die Sortierung kann auf mehreren Ebenen einer Datenbank festgelegt werden, z. B. auf Konto- oder Instanzebene, Datenbank-, Schema-, Sitzungs- oder Tabellenebene. Diese Einstellung kann die Funktionsweise der REPLACE-Funktion beeinflussen.

In diesem Beispiel erwarten Sie möglicherweise nicht, dass das große A durch das kleine b ersetzt wird. Aber es hängt von der Sortierung ab, die an die aktuelle Verbindung zur Datenbank vererbt wird.

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

Dieses Ergebnis stimmt wegen der Sortierung mit a mit A überein.

Die Sortierungseinstellung in SQL Server kann auf Serverebene überprüft werden:

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

Der Schlüssel hier ist das CI, das für Groß- und Kleinschreibung steht. Um die REPLACE-Funktion unter Berücksichtigung der Groß-/Kleinschreibung anzuwenden, kann der string_expression-Parameter explizit sortiert werden.

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

In diesem Beispiel ersetzt die REPLACE-Funktion nicht den ursprünglichen Wert, da beim Parameter string_expression die Groß- und Kleinschreibung beachtet wird.

Zusammenfassung

Die REPLACE-Funktion ist ein großartiges Werkzeug für die einfache und fortgeschrittene Manipulation von Zeichenfolgen über mehrere relationale Datenbanksysteme hinweg. Dieser Artikel untersuchte die grundlegende Anwendung der REPLACE-Funktion, wie man sie in einer dynamischen Funktion verwendet. Wir haben auch die Verwendung von REPLACE als verschachtelte Funktion besprochen und wie die Sortierung die von ihr zurückgegebenen Ergebnisse beeinflussen kann.