PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Vòng PostgreSQL (v số, s int)

Nó không được ghi lại, vì vậy nó có thể thay đổi.

Đây là round_half_even(numeric,integer) của tôi :

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;

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;

Chúng quản lý khoảng 500000 lệnh gọi mỗi giây, chậm hơn 6 lần so với vòng round(numeric,integer) . Chúng cũng hoạt động cho độ chính xác bằng 0 và âm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pg_escape_string chính xác làm được gì?

  2. Buộc ngắt kết nối máy khách bằng PostgreSQL

  3. Tạo chuỗi ngày - sử dụng loại ngày làm đầu vào

  4. LỖI:chuỗi được trích dẫn chưa kết thúc tại hoặc gần

  5. Docker - Làm cách nào để chạy lệnh psql trong vùng chứa postgres?