Trong Oracle, RTRIM()
hàm cho phép bạn cắt phần bên phải của một chuỗi. Theo mặc định, nó cắt bớt khoảng trắng, nhưng bạn có thể tùy chọn chỉ định một ký tự hoặc các ký tự khác để cắt.
Cú pháp
Cú pháp như sau:
RTRIM(char [, set ])
Ở đâu char
và set
có thể là bất kỳ kiểu dữ liệu nào CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
hoặc NCLOB
.
RTRIM
xóa khỏi phần cuối bên phải của char
tất cả các ký tự có trong set
. Nếu bạn không chỉ định set
, sau đó nó được đặt mặc định là một ô trống duy nhất.
Ví dụ
Đây là một ví dụ:
SELECT RTRIM('Cat ')
FROM DUAL;
Kết quả:
RTRIM('CAT') _______________ Cat
Ở đây, tôi không chỉ định ký tự / s nào cần cắt và do đó, mỗi ô trống đơn lẻ đã được cắt khỏi phần bên phải của chuỗi.
Không dễ để thấy tác dụng của ví dụ trên.
Dưới đây là một ví dụ khác, với chuỗi được nối với một chuỗi khác, trong khi so sánh kết quả với chuỗi ban đầu (không bị cắt):
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Kết quả:
'CAT'||'FOOD' ________________ Cat Food CatFood
Chỉ định một ký tự
Trong ví dụ này, tôi chỉ định một ký tự để cắt. Điều này giúp bạn dễ dàng nhìn thấy hiệu ứng hơn:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Kết quả:
RTRIM('...CAT...','.') _________________________ ...Cat
Vì vậy, chúng ta có thể thấy rằng nhân vật đã được cắt tỉa từ phía bên phải chứ không phải bên trái. Để cắt mặt trái, hãy sử dụng LTRIM()
hoặc TRIM()
.
Lưu ý rằng RTRIM()
chỉ cắt / s ký tự trong tập hợp cho đến khi có một ký tự không có trong tập hợp. Đây là một ví dụ về ý tôi muốn nói:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Kết quả:
RTRIM('CAT...B...','.') __________________________ Cat...B
Tuy nhiên, nếu chúng ta bao gồm B
trong tập hợp, sau đó chúng tôi nhận được một kết quả khác:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Kết quả:
RTRIM('CAT...B...','.B') ___________________________ Cat
Ví dụ về cơ sở dữ liệu
Dưới đây là một ví dụ về việc cắt bớt phần bên phải của các giá trị trong cột cơ sở dữ liệu:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Kết quả:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Giá trị rỗng
Nếu bất kỳ đối số nào là null
kết quả là null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Kết quả:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
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.
Cắt bỏ chuỗi trống
Chuyển một chuỗi trống làm đối số thứ hai dẫn đến null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Kết quả:
RTRIM('CAT','') __________________ null
Nhưng việc thêm một khoảng trắng vào chuỗi trống sẽ thay đổi điều đó và cắt bớt bất kỳ khoảng trống nào từ bên phải của chuỗi:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Kết quả:
RTRIM('CAT','') __________________ Cat
Số lượng đối số không chính xác
Gọi RTRIM()
mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:
SELECT RTRIM()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT RTRIM() 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:
Và việc chuyển sai số đối số dẫn đến lỗi:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT RTRIM('Cat', 1, '>') 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: