Trong SQL, LPAD()
là một hàm thường được sử dụng để đệm phần bên trái của chuỗi bằng một ký tự được chỉ định. Hàm có thể được sử dụng trên chuỗi và số, mặc dù tùy thuộc vào DBMS, các số có thể phải được chuyển dưới dạng chuỗi trước khi chúng có thể được đệm.
DBMS có LPAD()
bao gồm MySQL, MariaDB, PostgreSQL và Oracle.
DBMSs không có LPAD()
bao gồm SQL Server và SQLite (mặc dù có những cách khác để áp dụng phần đệm bên trái trong các DBMS này).
Ví dụ
Dưới đây là một ví dụ để minh họa cách sử dụng LPAD()
trong mã SQL của bạn:
SELECT LPAD('Look Left', 20);
Kết quả:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
Trong ví dụ này, phần bên trái của chuỗi được đệm bằng khoảng trắng (ký tự đệm mặc định) và chuỗi kết quả dài 20 ký tự (vì tôi đã chỉ định 20
như đối số thứ hai).
Oracle hoạt động tương tự, nhưng chúng ta cần sử dụng FROM DUAL
khi thực hiện một truy vấn như thế này (không truy vấn một bảng thực tế):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Kết quả:
LPAD('LOOKLEFT',20) _______________________ Look Left
Chỉ định một ký tự đệm
Phần đệm không nhất thiết phải là khoảng trống. Chúng tôi có thể tùy chọn thêm đối số thứ ba để chỉ định ký tự (hoặc các ký tự) để sử dụng trong phần đệm.
SELECT LPAD('7', 3, '0');
Kết quả:
007
Trong trường hợp này, tôi đã chèn một số bằng các số không. Trên thực tế, tôi đã chuyển số dưới dạng chuỗi trong ví dụ này.
Trong một số DBMS (chẳng hạn như MariaDB và MySQL), chúng ta có thể chuyển số dưới dạng số, cũng như số để đệm nó với:
SELECT LPAD(7, 3, 0);
Kết quả:
007
Chúng tôi cũng có thể làm điều này trong Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Kết quả:
007
Nhưng PostgreSQL có vấn đề với điều này:
SELECT LPAD(7, 3, 0);
Kết quả:
ERROR: function lpad(integer, integer, integer) does not exist
Máy chủ SQL
Máy chủ SQL không có LPAD()
nhưng nó có FORMAT()
hàm cho phép chúng ta thêm vào các số bằng các số 0 ở đầu:
SELECT FORMAT(7, '000');
Kết quả:
007
Cách thức hoạt động là chúng ta chuyển số, theo sau là một chuỗi định dạng. Trong ví dụ trên, chuỗi định dạng là 000
. Đây là một chuỗi định dạng số tùy chỉnh dẫn đến số ban đầu được đệm để kết quả bao gồm ba chữ số. Nếu chưa có ba chữ số trong số ban đầu, thì nó sẽ được đệm bằng các số không.
Đối với chuỗi pad bên trái trong SQL Server, chúng ta có thể làm như sau:
SELECT RIGHT('.......' + 'Cat', 7);
Kết quả:
....Cat
Ngoài ra còn có một số LPAD () tương đương khác trong SQL Server.