sql >> Database >  >> RDS >> PostgreSQL

Kan het Postgres-gegevenstype NUMERIC ondertekende waarden opslaan?

U kunt zeker het willekeurige precisietype numeric . gebruiken met een precisie van 5 en een schaal van 1, net zoals @Simon opmerkte, maar zonder de syntaxisfout. Gebruik een komma(, ) in plaats van de punt (. ) in de typemodifier:

SELECT numeric(5,1) '-999.9' AS nr_lower
     , numeric(5,1) '9999.9' AS nr_upper;

 nr_lower | nr_upper
----------+----------
   -999.9 |   9999.9

Het minteken en de punt in de letterlijke tekenreeks tellen niet mee voor het toegestane maximum van significante cijfers (precision ).
Als u de lengte niet hoeft te beperken, gebruikt u gewoon numeric .
Als je minimum en maximum moet afdwingen, voeg dan een controlebeperking toe:

CHECK (nr_column BETWEEN -999.9 AND 9999.9)

numeric slaat uw nummer exact op . Als je de absolute precisie niet nodig hebt en kleine afrondingsfouten geen probleem zijn, kun je ook een van de drijvende-kommatypes gebruiken double precision (float8 ) of real (float4 ).

Of, aangezien u slechts één decimaal cijfer achter de komma toestaat, kunt u vermenigvuldigen met 10 en integer gebruiken , wat de meest efficiënte opslag zou zijn:4 bytes, geen afrondingsfouten en snelste verwerking. Gebruik en documenteer het nummer gewoon goed.

Details voor numerieke typen in de handleiding.




  1. Django:Groep per maand zoeken

  2. Structuurweergave Controle Vinkje Toevoegen Verwijderen Knooppunten

  3. Hoe u een tabel in PostgreSQL kunt draaien

  4. Hoe kan ik row_number in Oracle versnellen?