PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да закръглим средна стойност до 2 знака след десетичната запетая в PostgreSQL?

PostgreSQL не дефинира round(double precision, integer) . Поради причини @Mike Sherrill 'Cat Recall' обяснява в коментарите, версията на кръга, която изисква прецизност, е достъпна само за numeric .

regress=> SELECT round( float8 '3.1415927', 2 );
ERROR:  function round(double precision, integer) does not exist

regress=> \df *round*
                           List of functions
   Schema   |  Name  | Result data type | Argument data types |  Type  
------------+--------+------------------+---------------------+--------
 pg_catalog | dround | double precision | double precision    | normal
 pg_catalog | round  | double precision | double precision    | normal
 pg_catalog | round  | numeric          | numeric             | normal
 pg_catalog | round  | numeric          | numeric, integer    | normal
(4 rows)

regress=> SELECT round( CAST(float8 '3.1415927' as numeric), 2);
 round 
-------
  3.14
(1 row)

(В горното, имайте предвид, че float8 е просто съкратен псевдоним за double precision . Можете да видите, че PostgreSQL го разширява в изхода).

Трябва да прехвърлите стойността, която да бъде закръглена до numeric за да използвате формата с два аргумента на round . Просто добавете ::numeric за стенография, като round(val::numeric,2) .

Ако форматирате за показване на потребителя, не използвайте round . Използвайте to_char (вижте:функции за форматиране на тип данни в ръководството), което ви позволява да посочите формат и ви дава text резултат, който не се влияе от каквито и да е странности, които вашият клиентски език може да направи с numeric стойности. Например:

regress=> SELECT to_char(float8 '3.1415927', 'FM999999999.00');
    to_char    
---------------
 3.14
(1 row)

to_char ще закръгли числата вместо вас като част от форматирането. FM префиксът казва to_char че не искате подпълване с водещи интервали.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Активиране на поддръжка на PostgreSQL в PHP на Mac OS X

  2. Компилиране на PL/Proxy с PostgresPlus Advance Server 9.1

  3. Psycopg2 използва памет за голяма заявка за избор

  4. PostgreSQL:Защо psql не може да се свърже със сървъра?

  5. Унищожаване на Postgres DB на Heroku