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

Thêm số 0 dẫn đầu (zero-padding) cho cột số trong MySQL với ZEROFILL

Vấn đề: Hiển thị số nguyên với độ rộng cố định, điền 0 ở đầu

Ví dụ: 1 → 0001, 23 → 0023. Thường dùng cho mã số, ID hiển thị.

Giải pháp: Thuộc tính ZEROFILL

Khi định nghĩa cột số nguyên, thêm ZEROFILL. MySQL tự động thêm UNSIGNED.

1. Tạo bảng với ZEROFILL

CREATE TABLE DemoTable (
    Code INT(4) ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY
);

INT(4) – Độ rộng hiển thị 4 chữ số. ZEROFILL – Điền 0 ở đầu nếu số chữ số ít hơn 4.

2. Chèn dữ liệu

INSERT INTO DemoTable VALUES (1), (2), (3), (4);

3. Kết quả hiển thị

+------+
| Code |
+------+
| 0001 |
| 0002 |
| 0003 |
| 0004 |
+------+

Lưu ý quan trọng

  • Chỉ ảnh hưởng đến hiển thị – Giá trị lưu trữ bên trong vẫn là số nguyên (1, 2, 3...).
  • ZEROFILL ngụ ý UNSIGNED – Không lưu số âm được.
  • Số chữ số trong ngoặc (INT(4)) chỉ là gợi ý hiển thị, không giới hạn phạm vi lưu trữ (INT vẫn -2 tỷ đến 2 tỷ).
  • Khi truy vấn bằng ngôn ngữ lập trình (Java, Python...), driver thường trả về kiểu số, không giữ định dạng 0001. Cần format lại ở lớp ứng dụng nếu cần.
  • MySQL 8.0.17+ khuyến cáo không dùng ZEROFILL (deprecated), hãy dùng LPAD() hoặc format ở ứng dụng.

Cách thay thế (khuyên dùng)

-- Khi SELECT, dùng LPAD
SELECT LPAD(Code, 4, '0') AS FormattedCode FROM DemoTable;

-- Hoặc format ở ứng dụng (ví dụ Java: String.format("%04d", id))