Sql, PostgreSQL。to_number和cast as numeric有何区别?
发布网友
发布时间:2022-04-09 09:53
我来回答
共2个回答
热心网友
时间:2022-04-09 11:22
ostgreSQL没有定义round(double precision, integer)。至于原因, 嘘声解释了一轮,需要一个精确的版本仅适用于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值。
热心网友
时间:2022-04-09 12:40
数字类型才比较大小的,字符是一个字一个字比