Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Điền số 0 ở đầu (padding) cho cột INT trong MySQL?

Đệm số 0 ở đầu (zero-padding) cho cột INT trong MySQL

Sử dụng LPAD() kết hợp CONVERT() để chuyển số thành chuỗi rồi đệm 0 bên trái đến độ dài cố định.

Cú pháp

SELECT LPAD(CONVERT(numberColumn, CHAR(8)), totalLength, '0') FROM yourTable;

Ví dụ: Đệm đến 10 chữ số

Tạo bảng:

mysql> CREATE TABLE paddingDemo (Number INT);

Chèn dữ liệu:

mysql> INSERT INTO paddingDemo VALUES (78), (560), (888995), (999994);

Dữ liệu gốc:

+--------+
| Number |
+--------+
| 78     |
| 560    |
| 888995 |
| 999994 |
+--------+

Đệm 0 bên trái độ dài 10:

mysql> SELECT LPAD(CONVERT(Number, CHAR(8)), 10, '0') AS paddingWithZeros FROM paddingDemo;

Kết quả:

+------------------+
| paddingWithZeros |
+------------------+
| 0000000078       |
| 0000000560       |
| 0000888995       |
| 0000999994       |
+------------------+

Giải thích

  • CONVERT(Number, CHAR(8)): Chuyển INT → VARCHAR (8 ký tự đủ cho INT)
  • LPAD(str, len, padstr): Đệm chuỗi padstr bên trái đến độ dài len
  • Kết quả là VARCHAR, không phải số

Cách khác: ZEROFILL (tạo bảng)

CREATE TABLE zerofillDemo (
    Id INT(5) ZEROFILL  -- Hiển thị 00001, 00012...
);
  • Chỉ ảnh hưởng hiển thị, giá trị lưu trữ vẫn là số
  • Tự động thêm UNSIGNED
  • Không khuyến nghị cho ứng dụng hiện đại (xử lý ở tầng presentation)

Cách khác: FORMAT / printf (MySQL 8.0+)

SELECT FORMAT(Number, 0) -- có dấu phẩy nghìn
SELECT LPAD(CAST(Number AS CHAR), 10, '0') -- CAST thay CONVERT

Ứng dụng

  • Mã số thứ tự: INV-000001, INV-000002
  • Mã nhân viên: EMP000123
  • Xuất báo cáo, file text fixed-width