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:
-
expr1vàexpr2có thể là bất kỳ kiểu dữ liệu nàoCHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOBhoặcNCLOB. -
nlà mộtNUMBERsố nguyên hoặc một giá trị có thể được chuyển đổi hoàn toàn thànhNUMBERsố 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: