如何将decimal型的转换为char型前面的0去掉?

[复制链接]
查看11 | 回复8 | 2008-1-21 16:50:24 | 显示全部楼层 |阅读模式
临时表session.tmp_result(bal_amt decimal(17,4))
保存了一组数据,比如 2000.3422,32000.2345 等等
转换为 char(bal_amt)存入另外一个表里 char(30) , 发现原来的数据左边都被补零了,像...000002000.3422 ,怎样才能把补的0给去掉?
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
oracle?
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
oracle上
ltrim(column_name, '0')
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
類型用varchar2
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
同意类型用varchar2, 尽量少采用char类型。
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
SQL> create table tt(t number(17,4));
表已创建。
SQL> insert into tt values(2000,3422,32000.2345);
insert into tt values(2000,3422,32000.2345)

*
第 1 行出现错误:
ORA-00913: 值过多

SQL> insert into tt values(2000.3422);
已创建 1 行。
SQL> insert into tt values(32000.2345);
已创建 1 行。
SQL> commit;
提交完成。
SQL> create talbe ttt(t char(30));
create talbe ttt(t char(30))
*
第 1 行出现错误:
ORA-00901: 无效 CREATE 命令

SQL> create table ttt(t char(30));
表已创建。
SQL> insert into ttt select char(t) from tt;
insert into ttt select char(t) from tt

*
第 1 行出现错误:
ORA-00936: 缺失表达式

SQL> insert into ttt select to_char(t) from tt;
已创建2行。
SQL> commit;
提交完成。
SQL> select * from ttt;
T

------------------------------

2000.3422

32000.2345

SQL> insert into ttt select t from tt;
已创建2行。
SQL> select * from ttt;
T

------------------------------

2000.3422

32000.2345

2000.3422

32000.2345

SQL> spool off;

怎么会在左边加0呢??????是在右边加空格吧??????
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
感觉楼主用的不是oracle
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
不知道 DB2下面是怎么处理的呢?
回复

使用道具 举报

千问 | 2008-1-21 16:50:24 | 显示全部楼层
将前半部分和后半部分分开rtrim(char(int(bal_amt)))| | '.' | |right(char(bal_amt),4)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行