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ố định000-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.