Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

LPAD với số 0 ở đầu

Tôi nghĩ rằng bạn nên cân nhắc rằng các nguyên tắc bạn đã đọc áp dụng cho cách một hóa đơn được hiển thị chứ không phải cách lưu trữ trong cơ sở dữ liệu.

Khi một số được lưu trữ dưới dạng INT, đó là một số thuần túy. Nếu bạn thêm các số không vào phía trước và lưu trữ lại, nó vẫn là một số như cũ.

Bạn có thể chọn trường NUMER như sau hoặc tạo chế độ xem cho bảng đó:

SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...

Hoặc, thay vì thay đổi dữ liệu khi bạn chọn nó từ cơ sở dữ liệu, hãy cân nhắc chèn số bằng các số không khi bạn hiển thị nó và chỉ khi bạn hiển thị nó.

Tôi nghĩ rằng yêu cầu của bạn để dữ liệu lịch sử được giữ nguyên là một điểm tranh luận. Ngay cả đối với dữ liệu lịch sử, hóa đơn được đánh số 001203 cũng giống như hóa đơn được đánh số 1203.

Tuy nhiên, nếu bạn hoàn toàn phải làm theo cách bạn mô tả, thì việc chuyển đổi thành trường VARCHAR có thể hoạt động. Dữ liệu lịch sử đã chuyển đổi có thể được lưu trữ nguyên trạng và bất kỳ mục nhập mới nào cũng có thể được đệm vào số lượng số không cần thiết. Nhưng tôi không khuyến khích điều đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. So sánh quản trị cơ bản giữa Oracle, MSSQL, MySQL, PostgreSQL

  2. PDO bind_param là phương thức không xác định

  3. Tạo mã QR từ các hàng MySQL

  4. SQLite nhanh hơn MySQL?

  5. Lược đồ mã hóa biểu tượng cảm xúc cuối cùng