sql >> Databasteknik >  >> RDS >> Mysql

MAX(kolumn) ger mig ett fel värde

Denna situation kan uppstå om ditt invoice_number lagras som en textkolumn t.ex. varchar(10) . I så fall, baserat på alfabetisk ordning, kommer 9 att vara det maximala värdet.

Helst bör du lagra värden som du vill utföra numeriska operationer på som numeriska datatyper, t.ex. int . Men om du av någon anledning inte kan ändra kolumndatatyp kan du prova att casta kolumnen innan du använder MAX , som så:

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

OBS:Jag nämner specifikt "värden som du vill utföra numeriska operationer på" eftersom det finns fall där den inmatade texten är helt och hållet numerisk, till exempel telefonnummer eller kanske kreditkortsnummer, men det finns inget scenario där du skulle vilja lägga till 2 telefonnummer, eller ta kvadratroten av ett kreditkortsnummer. Sådana värden bör lagras som text.



  1. Introduktion till PL/SQL-paket i Oracle Database

  2. Fel:SQLSTATE[42000]:Syntaxfel eller åtkomstöverträdelse med cakePHP

  3. Laravel Från Raw DB till Eloquent

  4. Användarvariabel i MySQL-underfrågan