postgresql两数相除保留小数两位?

danier_sky 2010-05-31 10:21:54
发现在postgresql中,select 1223/60;得出的结果竟然是个整数(20),会自动将小数部分去掉。
想问大家下,有什么方法可将小数保留两位?得出结果为20.38
...全文
6122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
danier_sky 2010-06-01
  • 打赏
  • 举报
回复
CREATE OR REPLACE FUNCTION proc_temp_playbill() --(begin_date ,end_date ,playlist_id)
RETURNS int4 AS
$BODY$
DECLARE iRes INT4;
DECLARE var varchar;
DECLARE bg varchar;
DECLARE eg varchar;
DECLARE ag varchar;
BEGIN
var := round(1223.0/60,2)::varchar;
bg := '2010-05-25 9:53';
eg := '2010-05-25 12:10';
raise notice '----------bg=% eg=%',bg,eg;
--ag:= age('2010-05-25 9:53', timestamp '2010-05-25 12:53')::varchar;
ag:= age(bg, timestamp eg)::varchar; --为何用varchar变量代替语句就不执行了???
raise notice '----------ag=%',ag;
if substr(ag,1,1)::varchar='-' then
raise notice '-';
end if;

ires := 99999;
RETURN ires;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION proc_temp_playbill() OWNER TO mposi;

select * from proc_temp_playbill();
iihero 2010-05-31
  • 打赏
  • 举报
回复
iihero=# select round(1223*1.0/60) as a, round(100*(round(1223*1.0/60, 2) - (1223/60)), 0) as b;
a | b
----+----
20 | 38
(1 row)
ACMAIN_CHM 2010-05-31
  • 打赏
  • 举报
回复
[Quote]得出的结果20.38,想分别截取小数点的前后的数值,保留到 DECLARE val int4[];[/Quote]你的需求到底是什么?

123.3456 这种数字你想处理成什么?
wwwwb 2010-05-31
  • 打赏
  • 举报
回复
再用CAST转换成INT
danier_sky 2010-05-31
  • 打赏
  • 举报
回复
怎么是text类型,可否是int4类型,或是varchar
wwwwb 2010-05-31
  • 打赏
  • 举报
回复
SELECT
SUBSTR(CAST(ROUND(1223.00/60.00,2) AS VARCHAR(10)),1,strpos(CAST(ROUND(1223.00/60.00,2) AS VARCHAR(10)),'.')-1),
SUBSTR(CAST(ROUND(1223.00/60.00,2) AS VARCHAR(10)),strpos(CAST(ROUND(1223.00/60.00,2) AS VARCHAR(10)),'.')+1,2),
danier_sky 2010-05-31
  • 打赏
  • 举报
回复
嗯,多谢,楼上
得出的结果20.38,想分别截取小数点的前后的数值,保留到 DECLARE val int4[];
怎么写?
ACMAIN_CHM 2010-05-31
  • 打赏
  • 举报
回复
csdn=# select round(1223.0/60,2);
round
-------
20.38
(1 row)


csdn=#
ACMAIN_CHM 2010-05-31
  • 打赏
  • 举报
回复
csdn=# select 1223.0/60;
?column?
---------------------
20.3833333333333333
(1 row)


csdn=#
wwwwb 2010-05-31
  • 打赏
  • 举报
回复
select 1223.00/60.00
wwwwb 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 danier_sky 的回复:]
很是谢谢大家,前面的问题已解决!
在问个 “字符串的长度要怎么获取”?
[/Quote]
length('123')
danier_sky 2010-05-31
  • 打赏
  • 举报
回复
很是谢谢大家,前面的问题已解决!
在问个 “字符串的长度要怎么获取”?

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧