PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Putaran PostgreSQL(v numerik, s int)

Itu tidak didokumentasikan, jadi bisa berubah.

Ini round_half_even(numeric,integer) saya :

create or replace function round_half_even(val numeric, prec integer)
    returns numeric
as $$
declare
    retval numeric;
    difference numeric;
    even boolean;
begin
    retval := round(val,prec);
    difference := retval-val;
    if abs(difference)*(10::numeric^prec) = 0.5::numeric then
        even := (retval * (10::numeric^prec)) % 2::numeric = 0::numeric;
        if not even then
            retval := round(val-difference,prec);
        end if;
    end if;
    return retval;
end;
$$ language plpgsql immutable strict;

Dan round_half_odd(numeric,integer) :

create or replace function round_half_odd(val numeric, prec integer)
    returns numeric
as $$
declare
    retval numeric;
    difference numeric;
    even boolean;
begin
    retval := round(val,prec);
    difference := retval-val;
    if abs(difference)*(10::numeric^prec) = 0.5::numeric then
        even := (retval * (10::numeric^prec)) % 2::numeric = 0::numeric;
        if even then
            retval := round(val-difference,prec);
        end if;
    end if;
    return retval;
end;
$$ language plpgsql immutable strict;

Mereka mengelola sekitar 500.000 permintaan per detik, 6 kali lebih lambat dari round(numeric,integer) standar . Mereka juga bekerja untuk nol dan untuk presisi negatif.



  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 - dapatkan metadata kolom tampilan yang terwujud

  2. Bagaimana cara menambahkan indeks unik bersyarat di PostgreSQL

  3. Bagaimana cara memetakan atribut integer model ke string?

  4. Postgresql lolos dari kutipan tunggal di mana klausa

  5. Webinar :Fitur Baru di PostgreSQL 11 [Tindak lanjut]