In Oracle das REPLACE()
Mit dieser Funktion können Sie einen Teil einer Zeichenfolge durch eine andere Zeichenfolge ersetzen.
Die Funktion akzeptiert drei Argumente:die Zeichenfolge, die zu ersetzende Teilzeichenfolge und die Ersatzzeichenfolge (durch die die Teilzeichenfolge ersetzt werden soll).
Sie können die Ersetzungszeichenfolge weglassen, in diesem Fall entfernt die Funktion alle Instanzen der Teilzeichenfolge.
Syntax
Die Syntax sieht so aus:
REPLACE(char, search_string
[, replacement_string ]
)
Wobei char
ist die Zeichenfolge, search_string
der zu ersetzende Teilstring ist und replacement_string
ist die Zeichenfolge, durch die diese Teilzeichenfolge ersetzt werden soll.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT
REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL;
Ergebnis:
Barrier Reef
In diesem Fall haben wir den Teilstring Island
ersetzt mit Reef
.
Mehrere Übereinstimmungen
Kommt der zu ersetzende String mehrfach innerhalb des Strings vor, werden alle Vorkommen ersetzt:
SELECT
REPLACE('Black dogs and white dogs', 'dog', 'cat')
FROM DUAL;
Ergebnis:
Black cats and white cats
Keine Übereinstimmung
Wenn der Teilstring nicht im String vorkommt, REPLACE()
gibt den String unverändert zurück:
SELECT
REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL;
Ergebnis:
Barrier Island
Einen Teilstring entfernen
Das Weglassen des dritten Arguments entfernt den Teilstring aus dem String:
SELECT
REPLACE('Black dogs and white dogs', 'dogs')
FROM DUAL;
Ergebnis:
Black and white
Wenn Sie genau hinsehen, werden Sie feststellen, dass die Leerzeichen immer noch vorhanden sind, da wir keine Leerzeichen im Teilstring angegeben haben.
Hier ist es noch einmal mit dem Leerzeichen:
SELECT
REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;
Ergebnis:
Black and white
Groß-/Kleinschreibung
Das REPLACE()
Funktion führt einen Vergleich zwischen Groß- und Kleinschreibung durch:
SELECT
REPLACE('Barrier Island', 'island', 'reef')
FROM DUAL;
Ergebnis:
Barrier Island
In diesem Beispiel stimmte die Groß-/Kleinschreibung nicht, und daher wurde die ursprüngliche Zeichenfolge unverändert zurückgegeben.
Leere Zeichenfolgen
Folgendes passiert, wenn für jedes angegebene Argument eine leere Zeichenfolge übergeben wird:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3"
FROM DUAL;
Ergebnis:
1 2 3 ____ ____________ _________ Black dog Black
Also in diesem Fall:
- Das Übergeben einer leeren Zeichenkette als Anfangszeichenkette gibt eine leere Zeichenkette zurück.
- Das Übergeben einer leeren Zeichenfolge für das zweite Argument gibt die ursprüngliche Zeichenfolge zurück.
- Das Übergeben eines leeren Strings für das dritte Argument entfernt den zu ersetzenden String aus dem String.
Leerzeichen
Eine leere Zeichenfolge ist nicht dasselbe wie das Leerzeichen.
Folgendes passiert, wenn wir die leere Zeichenfolge in ein Leerzeichen ändern:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;
Ergebnis:
1 2 3 ____ ______________ __________ Blackcatdog Black
Wenn also der String nur ein Leerzeichen ist, dann können wir das durch einen anderen String ersetzen:
SELECT REPLACE(' ', ' ', 'cat')
FROM DUAL;
Ergebnis:
cat
Null-Argumente
Übergabe von null
für jedes Argument funktioniert wie das Übergeben einer leeren Zeichenkette:
SET NULL 'null';
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3"
FROM DUAL;
Ergebnis:
1 2 3 _______ ____________ _________ null Black dog Black
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Fehlende Argumente
Aufruf von REPLACE()
ohne Übergabe von Argumenten ergibt sich ein Fehler:
SELECT REPLACE()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT REPLACE() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Zu viele Argumente
Und das Übergeben zu vieler Argumente gibt einen Fehler zurück:
SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT REPLACE('Cat', 'a', 'b', 'c') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: