金额类字段转字符串,如何不保留小数里面最后的零。
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:
9.5
【操作系统】:
麒麟V10
【CPU】:
ARM架构
【问题描述】*:
想要不保留后面的零(比如1232.120000转成1232.12)。目前现象是下面的。但是不是我要的结果。
gbase> insert into itl_db.testzza2(aa)values(1232.120000);
Query OK, 1 row affected (Elapsed: 00:00:00.01)
gbase> select * from itl_db.testzza2;
+----------------+
| aa |
+----------------+
| 1232.1200000000|
+----------------+
1 row in set (Elapsed: 00:00:00.01)
gbase> create table itl_db.testzza(aa varchar(32));
Query OK, 0 rows affected (Elapsed: 00:00:00.02)
gbase> insert into itl_db.testzza(aa) select trim(aa) from itl_db.testzza2;
Query OK, 1 row affected (Elapsed: 00:00:00.07)
Records: 1 Duplicates: 0 Warnings: 0
gbase> select * from itl_db.testzza;
+----------------+
| aa |
+----------------+
| 1232.1200000000|
+----------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> insert into itl_db.testzza(aa) select aa from itl_db.testzza2;
Query OK, 1 row affected (Elapsed: 00:00:00.02)
Records: 1 Duplicates: 0 Warnings: 0
gbase> select * from itl_db.testzza;
+----------------+
| aa |
+----------------+
| 1232.1200000000|
| 1232.1200000000|
+----------------+
2 rows in set (Elapsed: 00:00:00.01)
gbase> select version();
+--------------------------------+
| version() |
+--------------------------------+
| 9.5.3.28.35_patch.4.58ec1b70e1 |
+--------------------------------+
1 row in set (Elapsed: 00:00:00.00)
评论
FM 参数必须放在格式字符串的最前面
如果金额为负数, FM 也会去掉负号前的空格,负号会紧跟在数字前面
对于纯小数(如0.7), FM 会去掉整数部分的0显示为 .7 ,如果需要保留整数部分的0,可以使用 FM0 组合
gbase> SELECT TO_CHAR(1234.55000, 'FM999999999.9') FROM dual ;
+--------------------------------------+
| TO_CHAR(1234.55000, 'FM999999999.9') |
+--------------------------------------+
| 1234.6 |
+--------------------------------------+
1 row in set (Elapsed: 00:00:00.01)
gbase> SELECT TO_CHAR(1234.55000, 'FM999999999.9999') FROM dual ;
+-----------------------------------------+
| TO_CHAR(1234.55000, 'FM999999999.9999') |
+-----------------------------------------+
| 1234.55 |
+-----------------------------------------+
1 row in set (Elapsed: 00:00:00.01)
或者以下几种方式
1.使用 TRUNCATE 函数截断
INSERT INTO products (price) VALUES (TRUNCATE(1234.5000, 2));
2.使用 CAST 转换
INSERT INTO products (price) VALUES (CAST(1234.5000 AS DECIMAL(10,2)));
3.直接使用 DECIMAL 类型字段
CREATE TABLE products (
price DECIMAL(10,2)
);
FROM itl_db.testzza2;
热门帖子
- 12025-12-01浏览数:183870
- 22023-05-09浏览数:26541
- 42023-09-25浏览数:20233
- 52020-05-11浏览数:19013