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: