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

MAX (Cột) trả về cho tôi một giá trị sai

Tình huống này có thể xảy ra nếu invoice_number của bạn được lưu trữ dưới dạng cột văn bản, ví dụ:varchar(10) . Trong trường hợp đó, dựa trên thứ tự bảng chữ cái, 9 sẽ là giá trị lớn nhất.

Tốt nhất, bạn nên lưu trữ các giá trị mà bạn muốn thực hiện các phép toán số dưới dạng kiểu dữ liệu số, ví dụ:int . Tuy nhiên, nếu vì lý do nào đó bạn không thể thay đổi kiểu dữ liệu cột, bạn có thể thử truyền cột trước khi áp dụng MAX , như vậy:

select max (convert(invoice_number, signed integer)) as maxinv from invoice

LƯU Ý:Tôi đề cập cụ thể đến "các giá trị mà bạn muốn thực hiện các phép toán số" bởi vì có những trường hợp văn bản nhập hoàn toàn là số, chẳng hạn như số điện thoại hoặc có thể là số thẻ tín dụng, nhưng không có trường hợp nào mà bạn muốn thêm 2 số điện thoại hoặc lấy căn bậc hai của số thẻ tín dụng. Các giá trị này phải được lưu trữ dưới dạng văn bản.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều khóa ngoại?

  2. com.mysql.jdbc.PacketTooBigException

  3. Phát hiện kiểu dữ liệu trong khi sử dụng fetch_array với MySQLi

  4. Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/tmp/mysql.sock' (2)

  5. Chèn nhiều hàng trong mysql