Trong Oracle, REPLACE()
hàm cho phép bạn thay thế một phần của chuỗi bằng một chuỗi khác.
Hàm chấp nhận ba đối số:chuỗi, chuỗi con để thay thế và chuỗi thay thế (để thay thế chuỗi con bằng).
Bạn có thể bỏ qua chuỗi thay thế, trong trường hợp đó, hàm sẽ xóa tất cả các phiên bản của chuỗi con.
Cú pháp
Cú pháp như sau:
REPLACE(char, search_string
[, replacement_string ]
)
Ở đâu char
là chuỗi, search_string
là chuỗi con để thay thế và replacement_string
là chuỗi để thay thế chuỗi con đó bằng.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT
REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL;
Kết quả:
Barrier Reef
Trong trường hợp này, chúng tôi đã thay thế chuỗi con Island
với Reef
.
Nhiều Kết hợp
Nếu chuỗi được thay thế xảy ra nhiều lần trong chuỗi, tất cả các lần xuất hiện sẽ được thay thế:
SELECT
REPLACE('Black dogs and white dogs', 'dog', 'cat')
FROM DUAL;
Kết quả:
Black cats and white cats
Không phù hợp
Nếu chuỗi con không xuất hiện trong chuỗi, REPLACE()
trả về chuỗi không thay đổi:
SELECT
REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL;
Kết quả:
Barrier Island
Xóa một chuỗi con
Bỏ qua đối số thứ ba sẽ xóa chuỗi con khỏi chuỗi:
SELECT
REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;
Kết quả:
Black and white
Nếu quan sát kỹ, bạn sẽ nhận thấy rằng các khoảng trắng vẫn còn, vì chúng tôi không chỉ định bất kỳ khoảng trắng nào trong chuỗi con.
Đây là nó một lần nữa với không gian bao gồm:
SELECT
REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;
Kết quả:
Black and white
Phân biệt chữ hoa chữ thường
REPLACE()
hàm thực hiện so khớp phân biệt chữ hoa chữ thường:
SELECT
REPLACE('Barrier Island', 'island', 'reef')
FROM DUAL;
Kết quả:
Barrier Island
Trong ví dụ này, trường hợp không khớp và do đó, chuỗi ban đầu được trả về không thay đổi.
Chuỗi trống
Dưới đây là những gì sẽ xảy ra khi một chuỗi trống được chuyển cho mỗi đối số nhất định:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;
Kết quả:
1 2 3 ____ ____________ _________ Black dog Black
Vì vậy, trong trường hợp này:
- Truyền một chuỗi trống cho chuỗi ban đầu trả về một chuỗi trống.
- Truyền một chuỗi trống cho đối số thứ hai sẽ trả về chuỗi ban đầu.
- Truyền một chuỗi trống cho đối số thứ ba sẽ xóa chuỗi được thay thế khỏi chuỗi.
Ký tự không gian
Một chuỗi trống không giống với ký tự khoảng trắng.
Dưới đây là những gì sẽ xảy ra khi chúng tôi thay đổi chuỗi trống thành dấu cách:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;
Kết quả:
1 2 3 ____ ______________ __________ Blackcatdog Black
Do đó, nếu chuỗi không có gì khác ngoài khoảng trắng, thì chúng ta có thể thay thế chuỗi đó bằng một chuỗi khác:
SELECT REPLACE(' ', ' ', 'cat')
FROM DUAL;
Kết quả:
cat
Đối số rỗng
Chuyển null
đối với mỗi đối số hoạt động giống như truyền một chuỗi rỗng:
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;
Kết quả:
1 2 3 _______ ____________ _________ null Black dog Black
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null
xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Thiếu đối số
Đang gọi REPLACE()
mà không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT REPLACE()
FROM DUAL;
Kết quả:
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:
Quá nhiều đối số
Và việc chuyển quá nhiều đối số sẽ trả về lỗi:
SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL;
Kết quả:
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: