Trong Oracle, RPAD()
hàm cho phép bạn đệm phần bên phải của chuỗi với một ký tự nhất định, thành một số ký tự được chỉ định.
Cách thức hoạt động là bạn chỉ định chuỗi kết quả dài bao nhiêu. Nếu chuỗi gốc ngắn hơn, ký tự đệm sẽ điền vào khoảng trống còn lại.
Cú pháp
Cú pháp như sau:
RPAD(expr1 , n [, expr2 ])
Ở đâu:
-
expr1
vàexpr2
có thể là bất kỳ kiểu dữ liệu nàoCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
hoặcNCLOB
. -
n
là mộtNUMBER
số nguyên hoặc một giá trị có thể được chuyển đổi hoàn toàn thànhNUMBER
số nguyên.
Hàm trả về expr1
, được đệm bên phải thành độ dài n
ký tự với chuỗi ký tự trong expr2
.
Nếu expr2
bị bỏ qua, ký tự đệm là một ô trống duy nhất.
Ví dụ
Dưới đây là một ví dụ đơn giản để chứng minh:
SELECT RPAD('Cat', 25)
FROM DUAL;
Kết quả:
RPAD('CAT',25) ____________________________ Cat
Không dễ để thấy tác dụng của ví dụ này, vì chúng tôi đã đệm chuỗi bằng ký tự mặc định (dấu cách), nhưng nó có tác dụng đẩy chiều rộng của cột ra.
Dưới đây là một ví dụ khác chứng tỏ hiệu quả tốt hơn:
SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;
Kết quả:
RPAD('CAT',15)||'HOUSE' __________________________ Cat House
Việc kết hợp hai chuỗi cho thấy số lượng đệm đã được áp dụng cho phần bên phải của chuỗi ngoài cùng bên trái.
Lưu ý rằng số được cung cấp là tổng chiều rộng của chuỗi kết quả - không phải số lượng đệm.
Chỉ định một ký tự
Trong ví dụ này, tôi chỉ định một ký tự để sử dụng cho phần đệm:
SELECT RPAD('Cat', 7, '!')
FROM DUAL;
Kết quả:
RPAD('CAT',7,'!') ____________________ Cat!!!!
Padding nhỏ hơn chuỗi gốc
Nếu đối số thứ hai nhỏ hơn chuỗi ban đầu, thì không có khoảng đệm nào được thêm vào và chuỗi ban đầu được rút ngắn thành số ký tự được chỉ định:
SELECT RPAD('Cat', 2)
FROM DUAL;
Kết quả:
RPAD('CAT',2) ________________ Ca
Ví dụ về cơ sở dữ liệu
Dưới đây là một ví dụ về cách đệm phần bên phải của các giá trị trong cột cơ sở dữ liệu:
SELECT
country_name,
RPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Kết quả:
COUNTRY_NAME PADDED _______________ _______________ Argentina Argentina... Australia Australia... Belgium Belgium..... Brazil Brazil...... Canada Canada......
Giá trị rỗng
Nếu bất kỳ đối số nào là null
kết quả là null
:
SET NULL 'null';
SELECT
RPAD(null, 3),
RPAD('Cat', null),
RPAD('Cat', 3, null)
FROM DUAL;
Kết quả:
RPAD(NULL,3) RPAD('CAT',NULL) RPAD('CAT',3,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.
Số lượng đối số không chính xác
Gọi RPAD()
mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:
SELECT RPAD()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT RPAD() 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 RPAD('Cat', 1, '>', 2)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT RPAD('Cat', 1, '>', 2) FROM DUAL Error at Command Line : 1 Column : 28 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: