Oracle
 sql >> Baza danych >  >> RDS >> Oracle

REPLACE() Funkcja w Oracle

W Oracle REPLACE() funkcja umożliwia zastąpienie części ciągu innym ciągiem.

Funkcja przyjmuje trzy argumenty:ciąg, podciąg do zastąpienia i zastępczy ciąg (w celu zastąpienia podciągu).

Możesz pominąć ciąg zastępczy, w którym to przypadku funkcja usunie wszystkie wystąpienia podciągu.

Składnia

Składnia wygląda tak:

REPLACE(char, search_string
        [, replacement_string ]
       )

Gdzie char jest ciągiem, search_string jest podciągiem do zastąpienia, a replacement_string jest ciągiem, którym należy zastąpić ten podciąg.

Przykład

Oto podstawowy przykład:

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

Wynik:

Barrier Reef

W tym przypadku zastąpiliśmy podciąg Island z Reef .

Wiele meczów

Jeśli ciąg, który ma zostać zastąpiony, występuje wiele razy w ciągu, wszystkie wystąpienia są zastępowane:

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

Wynik:

Black cats and white cats

Brak dopasowania

Jeśli podciąg nie występuje w ciągu, REPLACE() zwraca ciąg niezmieniony:

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

Wynik:

Barrier Island

Usuń podciąg

Pominięcie trzeciego argumentu usuwa podciąg z ciągu:

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

Wynik:

Black  and white 

Jeśli przyjrzysz się uważnie, zauważysz, że spacje nadal pozostają, ponieważ nie określiliśmy żadnych spacji w podłańcuchu.

Oto znowu z uwzględnioną spacją:

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

Wynik:

Black and white

Wrażliwość na wielkość liter

REPLACE() funkcja wykonuje dopasowanie z uwzględnieniem wielkości liter:

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

Wynik:

Barrier Island

W tym przykładzie wielkość liter się nie zgadzała, więc oryginalny ciąg został zwrócony bez zmian.

Puste ciągi

Oto, co się dzieje, gdy dla każdego podanego argumentu zostanie przekazany pusty ciąg:

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

Wynik:

   1            2         3 
____ ____________ _________ 
     Black dog    Black    

Więc w tym przypadku:

  • Przekazanie pustego ciągu dla początkowego ciągu zwraca pusty ciąg.
  • Przekazanie pustego ciągu dla drugiego argumentu zwraca oryginalny ciąg.
  • Przekazanie pustego ciągu dla trzeciego argumentu usuwa ciąg, który ma zostać zastąpiony z ciągu.

Znak spacji

Pusty ciąg to nie to samo, co znak spacji.

Oto, co się dzieje, gdy zmieniamy pusty ciąg na spację:

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

Wynik:

   1              2          3 
____ ______________ __________ 
     Blackcatdog    Black     

Dlatego jeśli ciąg jest tylko spacją, możemy go zastąpić innym ciągiem:

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

Wynik:

cat

Argumenty zerowe

Przekazywanie null dla każdego argumentu działa jak przekazanie pustego ciągu:

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;

Wynik:

      1            2         3 
_______ ____________ _________ 
null    Black dog    Black    

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Brakujące argumenty

Wywołanie REPLACE() bez przekazywania jakichkolwiek argumentów powoduje błąd:

SELECT REPLACE()
FROM DUAL;

Wynik:

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:

Zbyt wiele argumentów

A przekazanie zbyt wielu argumentów zwraca błąd:

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

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywy dla LIMIT i OFFSET dla stronicowania w Oracle

  2. Jak wyeksportować wynik zapytania do csv w Oracle SQL Developer?

  3. Co i kiedy należy określić setFetchSize()?

  4. Jak zmienić język sesji Oracle

  5. Jak używać klucza obcego w Oracle