Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MAX(kolumna) zwraca mi błędną wartość

Ta sytuacja może wystąpić, jeśli Twój invoice_number jest przechowywany jako kolumna tekstowa np. varchar(10) . W takim przypadku, w kolejności alfabetycznej, 9 będzie wartością maksymalną.

Idealnie powinieneś przechowywać wartości, na których chcesz wykonywać operacje numeryczne, jako numeryczne typy danych, np. int . Jeśli jednak z jakiegoś powodu nie możesz zmienić typu danych kolumny, możesz spróbować rzutować kolumnę przed zastosowaniem MAX , jak tak:

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

UWAGA:konkretnie wspominam o „wartościach, na których chcesz wykonywać operacje numeryczne” ponieważ istnieją przypadki, w których tekst wejściowy jest całkowicie liczbowy, na przykład numery telefonów lub być może numery kart kredytowych, ale nie ma scenariusza, w którym chciałbyś dodać 2 numery telefonów lub wyciągnąć pierwiastek kwadratowy z numeru karty kredytowej. Takie wartości powinny być przechowywane jako tekst.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Następna najbliższa data i godzina w MySQL

  2. Brak modułu o nazwie MySQLdb, nawet jeśli zainstalowano MySQL-python?

  3. Jak rozwiązać niejednoznaczne nazwy kolumn podczas pobierania wyników?

  4. MySQL:Podsumuj wszystkie liczby wierszy w tabeli w jednym zapytaniu

  5. Udostępnianie bazy danych (mysql) pomiędzy aplikacjami Django z routerami bazodanowymi