Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

REPLACE() Fungsi di Oracle

Di Oracle, REPLACE() fungsi memungkinkan Anda untuk mengganti bagian dari string dengan string lain.

Fungsi menerima tiga argumen:string, substring yang akan diganti, dan string pengganti (untuk mengganti substring dengan).

Anda dapat menghilangkan string pengganti, dalam hal ini, fungsi akan menghapus semua instance dari substring.

Sintaks

Sintaksnya seperti ini:

REPLACE(char, search_string
        [, replacement_string ]
       )

Dimana char adalah string, search_string adalah substring yang akan diganti, dan replacement_string adalah string untuk menggantikan substring itu.

Contoh

Berikut ini contoh dasarnya:

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

Hasil:

Barrier Reef

Dalam hal ini kami mengganti substring Island dengan Reef .

Beberapa Kecocokan

Jika string yang akan diganti terjadi beberapa kali dalam string, semua kemunculan akan diganti:

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

Hasil:

Black cats and white cats

Tidak Cocok

Jika substring tidak muncul dalam string, REPLACE() mengembalikan string tidak berubah:

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

Hasil:

Barrier Island

Hapus Substring

Menghilangkan argumen ketiga menghapus substring dari string:

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

Hasil:

Black  and white 

Jika Anda perhatikan lebih dekat, Anda akan melihat bahwa spasi masih tersisa, karena kami tidak menentukan spasi apa pun di substring.

Ini dia lagi dengan spasi yang disertakan:

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

Hasil:

Black and white

Sensitivitas Huruf Besar

REPLACE() fungsi melakukan pencocokan peka huruf besar/kecil:

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

Hasil:

Barrier Island

Dalam contoh ini, kasus tidak cocok, sehingga string asli dikembalikan tidak berubah.

String Kosong

Inilah yang terjadi ketika string kosong dilewatkan untuk setiap argumen yang diberikan:

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

Hasil:

   1            2         3 
____ ____________ _________ 
     Black dog    Black    

Jadi dalam hal ini:

  • Meneruskan string kosong untuk string awal akan mengembalikan string kosong.
  • Meneruskan string kosong untuk argumen kedua akan mengembalikan string asli.
  • Meneruskan string kosong untuk argumen ketiga akan menghapus string yang akan diganti dari string.

Karakter Spasi

String kosong tidak sama dengan karakter spasi.

Inilah yang terjadi ketika kita mengubah string kosong menjadi spasi:

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

Hasil:

   1              2          3 
____ ______________ __________ 
     Blackcatdog    Black     

Oleh karena itu, jika string tidak lain adalah spasi, maka kita dapat menggantinya dengan string lain:

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

Hasil:

cat

Argumen Null

Melewati null untuk setiap argumen berfungsi seperti melewatkan string kosong:

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;

Hasil:

      1            2         3 
_______ ____________ _________ 
null    Black dog    Black    

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Argumen Tidak Ada

Memanggil REPLACE() tanpa memberikan argumen apa pun menghasilkan kesalahan:

SELECT REPLACE()
FROM DUAL;

Hasil:

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:

Terlalu Banyak Argumen

Dan meneruskan terlalu banyak argumen akan mengembalikan kesalahan:

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

Hasil:

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. TO_DATE() Fungsi di Oracle

  2. Oracle DROP TABLE JIKA ADA Alternatif

  3. Cara Mengubah Batasan

  4. perbedaan antara NLS_NCHAR_CHARACTERSET dan NLS_CHARACTERSET untuk Oracle

  5. Prosedur UTL_FILE.FOPEN() tidak menerima jalur untuk direktori?