Trong MariaDB, LPAD()
là một hàm chuỗi được tích hợp sẵn để đệm phần bên trái của chuỗi bằng một số ký tự nhất định.
Ví dụ:bạn có thể sử dụng LPAD()
để đệm phần bên trái của một chuỗi bằng dấu cách. Hoặc bạn có thể chèn một số bằng các số 0 ở đầu.
Cú pháp
Cú pháp như sau:
LPAD(str, len [, padstr])
Ở đâu str
là chuỗi ký tự và len
là số ký tự để đệm chuỗi. Lưu ý rằng đây không phải là số lượng của chính nó mà là tổng số ký tự mà chuỗi trả về sẽ có sau khi nó được đệm.
padstr
là một đối số tùy chọn chỉ định ký tự nào sẽ sử dụng cho phần đệm.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT LPAD('Lion', 8);
Kết quả:
+-----------------+ | LPAD('Lion', 8) | +-----------------+ | Lion | +-----------------+
Trong trường hợp này, chúng tôi không chỉ định đối số thứ ba (cho ký tự đệm) và do đó, một khoảng trắng đã được sử dụng. Ký tự khoảng trắng là ký tự mặc định.
Chỉ định một ký tự đệm
Đây là một ví dụ sử dụng đối số thứ ba. Điều này chỉ định ký tự nào sẽ sử dụng cho phần đệm:
SELECT LPAD('Lion', 8, '.');
Kết quả:
+----------------------+ | LPAD('Lion', 8, '.') | +----------------------+ | ....Lion | +----------------------+
Các dấu chấm cho phép chúng ta nhìn thấy phần đệm rõ ràng hơn.
Số đệm
Dưới đây là một ví dụ về cách đệm một số bằng các số không:
SELECT LPAD(7, 3, 0);
Kết quả:
+---------------+ | LPAD(7, 3, 0) | +---------------+ | 007 | +---------------+
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('Lion', 2);
Kết quả:
+-----------------+ | LPAD('Lion', 2) | +-----------------+ | Li | +-----------------+
Ví dụ về Cơ sở dữ liệu
Dưới đây là một 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
LPAD(PetName, 15, '.') AS "Padded Name",
PetName AS "Original Name"
FROM Pets;
Kết quả:
+-----------------+---------------+ | Padded Name | Original Name | +-----------------+---------------+ | .........Fluffy | Fluffy | | ..........Fetch | Fetch | | ........Scratch | Scratch | | ............Wag | Wag | | ..........Tweet | Tweet | | .........Fluffy | Fluffy | | ...........Bark | Bark | | ...........Meow | Meow | +-----------------+---------------+
Dưới đây là một ví dụ khác về cột giá:
SELECT
ProductId,
ProductPrice,
LPAD(ProductPrice, 8, 0)
FROM Products;
Kết quả:
+-----------+--------------+--------------------------+ | ProductId | ProductPrice | LPAD(ProductPrice, 8, 0) | +-----------+--------------+--------------------------+ | 1 | 25.99 | 00025.99 | | 2 | 25.99 | 00025.99 | | 3 | 14.75 | 00014.75 | | 4 | 11.99 | 00011.99 | | 5 | 33.49 | 00033.49 | | 6 | 245.00 | 00245.00 | | 7 | 55.99 | 00055.99 | | 8 | 9.99 | 00009.99 | +-----------+--------------+--------------------------+
Đối số rỗng
Nếu bất kỳ (hoặc tất cả) đối số null
, LPAD()
hàm trả về null
:
SELECT
LPAD(null, 10, '.'),
LPAD('Coffee', null, '.'),
LPAD('Coffee', 10, null);
Kết quả:
+---------------------+---------------------------+--------------------------+ | LPAD(null, 10, '.') | LPAD('Coffee', null, '.') | LPAD('Coffee', 10, null) | +---------------------+---------------------------+--------------------------+ | NULL | NULL | NULL | +---------------------+---------------------------+--------------------------+
Chế độ Oracle
Khi không đang chạy ở chế độ Oracle, nếu kết quả trống (tức là nó có độ dài bằng 0) thì kết quả là một chuỗi trống.
Tuy nhiên, khi chạy ở chế độ Oracle, kết quả là null
.
Đây là chế độ mặc định (tức là không trong chế độ Oracle):
SELECT LPAD('', 0);
Kết quả:
+-------------+ | LPAD('', 0) | +-------------+ | | +-------------+
Bây giờ, hãy chuyển sang chế độ Oracle:
SET SQL_MODE=ORACLE;
Và chạy lại mã:
SELECT LPAD('', 0);
Kết quả:
+-------------+ | LPAD('', 0) | +-------------+ | NULL | +-------------+
Thiếu đối số
Đang gọi LPAD()
không có ít nhất hai đối số dẫn đến lỗi:
SELECT LPAD('Coffee');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'
Điều tương tự cũng xảy ra khi gọi LPAD()
không có bất kỳ đối số nào:
SELECT LPAD();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'