sql >> Database teknologi >  >> RDS >> Mysql

MAX(kolonne) giver mig en forkert værdi

Denne situation kan opstå, hvis dit invoice_number gemmes som en tekstkolonne f.eks. varchar(10) . I så fald, baseret på alfabetisk rækkefølge, vil 9 være den maksimale værdi.

Ideelt set bør du gemme værdier, som du ønsker at udføre numeriske operationer på som numeriske datatyper, f.eks. int . Men hvis du af en eller anden grund ikke kan ændre kolonnedatatype, kan du prøve at caste kolonnen, før du anvender MAX , sådan:

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

BEMÆRK:Jeg nævner specifikt "værdier, som du vil udføre numeriske operationer på" fordi der er tilfælde, hvor inputteksten er helt numerisk, såsom telefonnumre eller måske kreditkortnumre, men der er ikke noget scenarie, hvor du ønsker at tilføje 2 telefonnumre eller tage kvadratroden af ​​et kreditkortnummer. Sådanne værdier skal gemmes som tekst.



  1. Giver mysql CLI-værktøjet en måde at vise binære data på en konsolvenlig måde?

  2. MySQL:summen af ​​hver dag

  3. Postgres SSL SYSCALL fejl:EOF opdaget med python og psycopg

  4. Sådan opsætter du en WordPress MySQL-database i skyen