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

Đệm 0 bên trái và thêm dấu gạch ngang cho SerialNumber trong MySQL

Giới thiệu

Sử dụng CONCAT() và RIGHT() để tạo chuỗi định dạng 000-100, 000-101... từ cột số nguyên SerialNumber.

Ví dụ thực hành

1. Tạo bảng DemoTable829

mysql> CREATE TABLE DemoTable829 (SerialNumber INT);

2. Chèn dữ liệu

mysql> INSERT INTO DemoTable829 VALUES (100),(101),(102),(103),(104);

3. Tạo chuỗi '000-XXX' (tổng 7 ký tự)

mysql> SELECT RIGHT(CONCAT('000-', SerialNumber), 7) FROM DemoTable829;

4. Kết quả

+----------------------------------------+
| RIGHT(CONCAT('000-', SerialNumber), 7) |
+----------------------------------------+
| 000-100                                |
| 000-101                                |
| 000-102                                |
| 000-103                                |
| 000-104                                |
+----------------------------------------+

Giải thích

  • CONCAT('000-', SerialNumber) → '000-100', '000-101'...
  • RIGHT(..., 7) lấy 7 ký tự cuối → đảm bảo định dạng cố định 000-XXX (3 số 0 + dấu gạch + 3 chữ số).
  • Nếu SerialNumber > 999 (ví dụ 1000) → CONCAT = '000-1000' (8 ký tự) → RIGHT(...,7) = '00-1000' (mất 1 số 0). Cần điều chỉnh logic cho số lớn.

Cách mạnh mẽ hơn: LPAD

-- Đệm 0 cho phần số thành 3 chữ số, rồi nối dấu gạch
SELECT CONCAT('000-', LPAD(SerialNumber, 3, '0')) FROM DemoTable829;
-- 100 → 000-100
-- 5   → 000-005
-- 1000 → 000-1000 (tự động mở rộng, không cắt)

Ứng dụng

  • Mã sản phẩm: CONCAT('PRD-', LPAD(id, 6, '0')) → PRD-000001.
  • Mã đơn hàng: CONCAT(YEAR(NOW()), '-', LPAD(seq, 5, '0')).
  • Sinh mã tham chiếu ngắn, dễ đọc, dễ tìm kiếm.