sql >> Databáze >  >> RDS >> Mysql

MAX (sloupec) mi vrací špatnou hodnotu

Tato situace může nastat, pokud vaše invoice_number je uložen jako textový sloupec, např. varchar(10) . V takovém případě, na základě abecedního pořadí, bude maximální hodnota 9.

V ideálním případě byste měli ukládat hodnoty, se kterými chcete provádět numerické operace, jako numerické datové typy, např. int . Pokud však z nějakého důvodu nemůžete změnit datový typ sloupce, můžete před použitím MAX zkusit sloupec přetypovat , asi takhle:

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

POZNÁMKA:Konkrétně uvádím "hodnoty, se kterými chcete provádět numerické operace" protože existují případy, kdy je vstupní text výhradně číselný, jako jsou telefonní čísla nebo možná čísla kreditních karet, ale neexistuje žádný scénář, ve kterém byste chtěli přidat 2 telefonní čísla nebo vzít druhou odmocninu čísla kreditní karty. Takové hodnoty by měly být uloženy jako text.



  1. Vynutit MySQL, aby vrátilo duplikáty z klauzule WHERE IN bez použití JOIN/UNION?

  2. Echo více hodnot se stejným názvem sloupce ve stejné tabulce

  3. Příklady TIMESTAMP() – MySQL

  4. Jak zabránit duplicitním záznamům z mé tabulky Vložit ignorování zde nefunguje