Mysql
 sql >> база данни >  >> RDS >> Mysql

MAX(Колона) ми връща грешна стойност

Тази ситуация може да възникне, ако invoice_number се съхранява като текстова колона, напр. varchar(10) . В този случай, въз основа на азбучен ред, 9 ще бъде максималната стойност.

В идеалния случай трябва да съхранявате стойности, върху които искате да извършвате числови операции като числови типове данни, напр. int . Въпреки това, ако по някаква причина не можете да промените типа данни на колоната, можете да опитате да прехвърлите колоната, преди да приложите MAX , така:

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

ЗАБЕЛЕЖКА:Специално споменавам "стойности, върху които искате да извършите числови операции" тъй като има случаи, в които въведеният текст е изцяло цифров, като телефонни номера или може би номера на кредитни карти, но няма сценарий, при който бихте искали да добавите 2 телефонни номера или да вземете корен квадратен от номер на кредитна карта. Такива стойности трябва да се съхраняват като текст.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да определите версията на MySQL

  2. Импортиране на MySQL база данни от един сървър на друг

  3. Вмъкване на множество реда от php формуляр в базата данни

  4. Формуляр в PDO за актуализиране на данни

  5. Най-добрият начин да проверите дали mysql_query е върнал някакви резултати?