sql >> Database teknologi >  >> RDS >> Oracle

Hvordan kan et Oracle NUMMER have en skala, der er større end præcisionen?

Ifølge Oracle-dokumentationen:

Sådan ser jeg det :

  • Når Precision er større end skala (f.eks. NUMBER(8,5) ), intet problem, dette er ligetil. Precision betyder, at tallet i alt vil have 8 cifre, hvoraf 5 er i brøkdelen (.→), så heltalsdelen (←.) vil have 3 cifre. Det er nemt.
  • Når du ser den Precision er mindre end Scale (f.eks. NUMBER(2, 5) ), betyder det 3 ting :

    • Tallet vil ikke have nogen heltalsdel, kun brøkdel. Så 0'et i heltalsdelen tælles ikke med i beregningerne, du siger .12345 ikke 0.12345. Faktisk, hvis du kun angiver 1 ciffer i heltalsdelen, vil det altid returnere en fejl.
    • Scale repræsenterer det samlede antal cifre i brøkdelen, som tallet vil have. 5 i dette tilfælde. Så det kan være .12345 eller .00098, men ikke mere end 5 cifre i alt.
    • Brøkdelen er opdelt i 2 dele, signifikante tal og nuller. Væsentlige tal er angivet med Precision , og minimumsantallet af nuller er lig med (Scale - Precision ). Eksempel:

    her Tallet vil have minimum 3 nuller i brøkdelen. efterfulgt af 2 signifikante tal (kan også have et nul). Så 3 nuller + 2 signifikante tal =5, som er Scale nummer.

Kort sagt, når du f.eks. ser NUMBER(6,9) , dette fortæller os, at brøkdelen vil have 9 cifre i alt, startende med obligatoriske 3 nuller og efterfulgt af 6 cifre.

Her er nogle eksempler:

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. Hvorfor og hvornår kræves JAXBElement i JAXB?

  2. MSSQL-fejl 'Den underliggende udbyder mislykkedes ved åben'

  3. Django + Postgres + Large Time Series

  4. Er det nødvendigt at lukke en Psycopg2-forbindelse i slutningen af ​​et script?