Trong Oracle, LPAD()
hàm cho phép bạn đệm phần bên trái của chuỗi bằng 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:
LPAD(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 trái thành chiều 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 LPAD('Cat', 5)
FROM DUAL;
Kết quả:
LPAD('CAT',5) ________________ Cat
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.
Đây lại là chuỗi khi so sánh với chuỗi ban đầu (không đệm):
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Kết quả:
LPAD('CAT',5) ________________ Cat Cat
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 LPAD('Cat', 5, '>')
FROM DUAL;
Kết quả:
LPAD('CAT',5,'>') ____________________ >>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 LPAD('Cat', 2)
FROM DUAL;
Kết quả:
LPAD('CAT',2) ________________ Ca
Ví dụ về cơ sở dữ liệu
Dưới đây là ví dụ về cách đệm phần bên trái của các giá trị trong cột cơ sở dữ liệu:
SELECT
country_name,
LPAD(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
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Kết quả:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('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
Đang gọi LPAD()
mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:
SELECT LPAD()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LPAD() 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 LPAD('Cat', 1, '>', 2)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LPAD('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: