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

REPLACE() Funktion i Oracle

I Oracle er REPLACE() funktionen giver dig mulighed for at erstatte en del af en streng med en anden streng.

Funktionen accepterer tre argumenter:strengen, understrengen, der skal erstattes, og erstatningsstrengen (til at erstatte understrengen med).

Du kan udelade erstatningsstrengen, i hvilket tilfælde funktionen vil fjerne alle forekomster af understrengen.

Syntaks

Syntaksen ser sådan ud:

REPLACE(char, search_string
        [, replacement_string ]
       )

Hvor char er strengen, search_string er understrengen, der skal erstattes, og replacement_string er strengen, der skal erstatte den understreng med.

Eksempel

Her er et grundlæggende eksempel:

SELECT 
    REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL;

Resultat:

Barrier Reef

I dette tilfælde erstattede vi understrengen Island med Reef .

Flere match

Hvis strengen, der skal erstattes, forekommer flere gange i strengen, erstattes alle forekomster:

SELECT 
    REPLACE('Black dogs and white dogs', 'dog', 'cat')
FROM DUAL;

Resultat:

Black cats and white cats

Ingen match

Hvis understrengen ikke forekommer i strengen, REPLACE() returnerer strengen uændret:

SELECT 
    REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL;

Resultat:

Barrier Island

Fjern en understreng

Udeladelse af det tredje argument fjerner understrengen fra strengen:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

Resultat:

Black  and white 

Hvis du ser godt efter, vil du bemærke, at mellemrummene stadig er tilbage, da vi ikke har angivet nogen mellemrum i understrengen.

Her er den igen med pladsen inkluderet:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

Resultat:

Black and white

Skrivar og bogstaver

REPLACE() funktion udfører et match, der skelner mellem store og små bogstaver:

SELECT 
    REPLACE('Barrier Island', 'island', 'reef')
FROM DUAL;

Resultat:

Barrier Island

I dette eksempel matchede sagen ikke, og derfor blev den oprindelige streng returneret uændret.

Tomme strenge

Her er, hvad der sker, når en tom streng sendes for hvert givet argument:

SELECT 
    REPLACE('', 'dog', 'cat') AS "1",
    REPLACE('Black dog', '', 'cat') AS "2",
    REPLACE('Black dog', 'dog', '') AS "3"
FROM DUAL;

Resultat:

   1            2         3 
____ ____________ _________ 
     Black dog    Black    

Så i dette tilfælde:

  • Ved at sende en tom streng for den indledende streng returneres en tom streng.
  • Hvis du sender en tom streng for det andet argument, returneres den oprindelige streng.
  • Hvis du sender en tom streng for det tredje argument, fjernes den streng, der skal erstattes, fra strengen.

Mellemrumstegn

En tom streng er ikke det samme som mellemrumstegnet.

Her er, hvad der sker, når vi ændrer den tomme streng til et mellemrum:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;

Resultat:

   1              2          3 
____ ______________ __________ 
     Blackcatdog    Black     

Derfor, hvis strengen ikke er andet end et mellemrum, kan vi erstatte det med en anden streng:

SELECT REPLACE(' ', ' ', 'cat')
FROM DUAL;

Resultat:

cat

Nul-argumenter

Sender null for hvert argument fungerer som at sende en tom streng:

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;

Resultat:

      1            2         3 
_______ ____________ _________ 
null    Black dog    Black    

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Manglende argumenter

Kalder REPLACE() uden at sende nogen argumenter resulterer det i en fejl:

SELECT REPLACE()
FROM DUAL;

Resultat:

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:

For mange argumenter

Og at sende for mange argumenter returnerer en fejl:

SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL;

Resultat:

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:

  1. .patch_storage

  2. Forskellen mellem to datoer i MySQL

  3. Sådan beskytter du din MySQL- eller MariaDB-database mod SQL-injektion:Anden del

  4. Vigtige sundhedstjek for dine MySQL-kilde-replikservere