sql >> Databáze >  >> RDS >> Oracle

Jak může mít Oracle NUMBER měřítko větší než přesnost?

Podle dokumentace Oracle:

Vidím to takto:

  • Když je Precision je větší než Měřítko (např. NUMBER(8,5) ), žádný problém, to je jednoduché. Precision znamená, že číslo bude mít celkem 8 číslic, z nichž 5 je ve zlomkové části (.→), takže celočíselná část (←.) bude mít 3 číslice. To je snadné.
  • Když vidíte, že Precision je menší než Scale (např. NUMBER(2, 5) ), to znamená 3 věci:

    • Číslo nebude mít žádnou celočíselnou část, pouze zlomkovou část. Takže 0 v celočíselné části se ve výpočtech nepočítá, říkáte 0,12345 ne 0,12345. Ve skutečnosti, pokud zadáte pouze 1 číslici v části celého čísla, vždy vrátí chybu.
    • Scale představuje celkový počet číslic ve zlomkové části, kterou bude číslo mít. 5 v tomto případě. Může tedy být .12345 nebo .00098, ale celkem ne více než 5 číslic.
    • Zlomková část je rozdělena na 2 části, významná čísla a nuly. Významná čísla jsou určena Precision a minimální počet nul se rovná (Scale - Precision ). Příklad :

    zde Číslo musí mít ve zlomkové části minimálně 3 nuly. následují 2 platná čísla (může mít i nulu). Takže 3 nuly + 2 platná čísla =5, což je Scale číslo.

Stručně řečeno, když vidíte například NUMBER(6,9) , to nám říká, že zlomková část bude mít celkem 9 číslic, počínaje povinnými 3 nulami a následovanými 6 číslicemi.

Zde je několik příkladů:

SELECT CAST(.0000123 AS NUMBER(6,9)) FROM dual;   -- prints: 0.0000123; .000|012300
SELECT CAST(.000012345 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012345
SELECT CAST(.123456 AS NUMBER(3,4)) FROM dual;    -- ERROR! must have a 1 zero (4-3=1)
SELECT CAST(.013579 AS NUMBER(3,4)) FROM dual;    -- prints: 0.0136; max 4 digits, .013579 rounded to .0136


  1. Existuje způsob, jak předat heslo uživatele DB do nástroje příkazového řádku mysqladmin?

  2. Vytvoření aplikace Java v Oracle JDeveloper, část 2

  3. Aktualizace Laravel nebo vytvoření pomocí automatické přírůstkové databáze

  4. INSERT INTO nebo UPDATE se dvěma podmínkami