در تابع REPLACE میتوان کاراکتری را به جای کاراکتری دیگر جایگزین نمود. این تابع دارای حداقل دو و حداکثر سه آرگومان میباشد. آرگومان اول فیلد مورد نظر را جستجو و آرگومان دوم، کلید جستوجو است. آرگومان سوم کاراکتر جایگزین میباشد. توجه داشته باشید که آرگومان سوم اختیاری است. به مثال زیر دقت کنید.
SQL> SELECT * FROM PERSON;
NAME FAMILY AGE ID-PERSON
-------- ----------- ------------- ----------
MOHAMMAD GHAFFARI 23 1
MAHDI GHAFFARI 21 2
MOHSEN GHAFFARI 19 3
FARZAD KARKHANI 26 4
EHSAN JALALI 23 5
SELECT NAME, REPLACE(NAME, 'MO', '##') FROM PERSON;
در دستور بالا، REPLACE دادههای فیلد NAME را پیدا کرده به جای MO ، کاراکتر ## را قرار میدهد. نتیجه دستور را، در زیر میبینیم.
NAME FAMILY AGE ID-PERSON
-------- ----------- ------------- ----------
##HAMMAD GHAFFARI 23 1
MAHDI GHAFFARI 21 2
##HSEN GHAFFARI 19 3
FARZAD KARKHANI 26 4
EHSAN JALALI 23 5
شاید برای شما سوال پیش اومده باشه که، اگر آرگومان سوم را حذف کنیم، چه اتفاقی خواهد افتاد. به مثال بعد توجه کنید:
SELECT NAME, REPLACE(NAME, 'M') REPLACE_NAME_M FROM PERSON;
دستور فوق، حرف M را از دادههای فیلد NAME حذف میکند. نتیجه دستور را، در زیر مشاهده میکنید.
NAME REPLACE_NAME_M
--------- ----------------
MOHAMMAD OHAMMAD
MAHDI AHDI
MOHSEN OHSEN
FARZAD FARZAD
EHSAN EHSAN
حال اگر آرگومان دوم را NULL قرار دهیم، چه اتفاقی خواهد افتاد؟! دستور زیر را با هم میبینیم:
SELECT NAME, REPLACE(NAME, NULL) REPLACE_NAME_M FROM PERSON;
همانطور که در زیر مشاهده میکنید، اگر آرگومان دوم را NULL قرار دهیم، فیلد مذکور بدون تغییر باقی خواهد ماند.
NAME REPLACE_NAME_M
--------- ----------------
MOHAMMAD MOHAMMAD
MAHDI MAHDI
MOHSEN MOHSEN
FARZAD FARZAD
EHSAN EHSAN