Oracle
 sql >> Datenbank >  >> RDS >> Oracle

REPLACE()-Funktion in Oracle

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: