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

Jak používat MySQL DECIMAL?

DOUBLE sloupce nejsou stejné jako DECIMAL sloupce a budete mít potíže pokud pro finanční údaje používáte DOUBLE sloupce.

DOUBLE je ve skutečnosti pouze verze s dvojitou přesností (64 bitů namísto 32 bitů) verze FLOAT . Čísla s plovoucí desetinnou čárkou jsou přibližná vyjádření skutečných čísel a nejsou přesné. Ve skutečnosti jednoduchá čísla jako 0,01 nemají přesné zastoupení v typech FLOAT nebo DOUBLE.

Sloupce DECIMAL jsou přesné reprezentace, ale zabírají mnohem více místa pro mnohem menší rozsah možných čísel. Chcete-li vytvořit sloupec schopný pojmout hodnoty od 0,0001 do 99,9999, jak jste požadovali, budete potřebovat následující příkaz

CREATE TABLE your_table
(
    your_column DECIMAL(6,4) NOT NULL
);

Definice sloupce má formát DECIMAL(M, D), kde M je maximální počet číslic (přesnost ) a D je počet číslic napravo od desetinné čárky (škála ).

To znamená, že předchozí příkaz vytvoří sloupec, který přijímá hodnoty od -99,9999 do 99,9999. Můžete také vytvořit sloupec UNSIGNED DECIMAL v rozsahu od 0,0000 do 99,9999.

Pokud chcete například sloupec, který přijímá hodnoty od -9999,99 do 9999,99, příkaz by byl DECIMAL(6,2) . Jak vidíte, stále používáte přesnost ze 6, ale umožňují pouze měřítko ze 2.

Další informace o MySQL DECIMAL naleznete v oficiálních dokumentech jsou vždy skvělým zdrojem.

Mějte na paměti, že všechny tyto informace platí pro verze MySQL 5.0.3 a vyšší. Pokud používáte předchozí verze, měli byste opravdu upgradovat.

Aktualizace na MySQL 8.0.17+

Unsigned je zastaralý pro sloupce FLOAT, DOUBLE a DECIMAL.



  1. Hodnoty vazby PDO pro příkaz MySQL IN

  2. Jaký datový typ MySQL použít pro IP adresu?

  3. Jak ukládat pole v MySQL?

  4. Entity Framework s mysql, problém s kapitalizací tabulky mezi linuxem a windows