ninth 发表于 2005-06-07 12:18

ninth 发表于 2005-06-08 16:18

我是马甲 发表于 2005-06-08 20:45

怎样去掉多余的0

变通一下, 不用char函数来转换类型.

在应用里还是用double类型把数据取出来

然后用C里的sprintf函数把数字转换成字符串,就没有前导0了!

zcj_csdn 发表于 2005-07-03 00:32

怎样去掉多余的0

char(bigint(ARPU_VALUE))

rheet1978 发表于 2005-07-03 12:21

怎样去掉多余的0

应该在应用程序里先取出数值,再转换成char类型,直接转不好转。

mymm 发表于 2005-07-04 22:59

怎样去掉多余的0

试一下:

D:\>;db2 "values char(decimal(62.7,18,2))"

1
--------------------
0000000000000062.70

1 条记录已选择。


D:\>;db2 "values substr(char(decimal(62.7,18,2)),posstr(char(decimal(62.7,18,2)),ltrim(rtrim(char(int(decimal(62.7,18,2)))))) )"

1
--------------------
62.70

1 条记录已选择。

实际为:

substr(char(ARPU_VALUE),posstr(char(ARPU_VALUE),ltrim(rtrim(char(int(ARPU_VALUE)))))-1 )

思路为通过posstr取出整数位置,再用substr截取!

还有其它办法,比如:整数||小数等

其实还是通过具体应用解决较为方便!

rheet1978 发表于 2005-07-05 10:03

怎样去掉多余的0

谢了,收藏;不过还是建议在程序中实现转换,在sql中实现转换个人认为比较麻烦

vprofessor 发表于 2011-01-10 10:49

楼上给出的这个算法我很启发,但是有一点小问题,就是当整数部分为0(如0.85)时得出的结果与直接用char()函数得出的结果相同,即没有达到去前导0的效果。
改进后的算法应该是:select rtrim(char(int(amt)))||substr(char(amt),posstr(char(amt),'.')) from table_name
其中amt是decimal型的字段名,table_name为表名。

3sane 发表于 2011-01-12 11:16

有一个字段定义为ARPU_VALUEDECIMAL(18, 2),当我用CHAR对它转换时,结果变为0000000000000062.70,怎么把前 ...
ninth 发表于 2005-06-07 12:18 http://bbs2.chinaunix.net/images/common/back.gif


加上    modified by striplzeros decplusblank 试试?
页: [1]
查看完整版本: 怎样去掉多余的0