怎样去掉多余的0
变通一下, 不用char函数来转换类型.在应用里还是用double类型把数据取出来
然后用C里的sprintf函数把数字转换成字符串,就没有前导0了!
怎样去掉多余的0
char(bigint(ARPU_VALUE))怎样去掉多余的0
应该在应用程序里先取出数值,再转换成char类型,直接转不好转。怎样去掉多余的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截取!
还有其它办法,比如:整数||小数等
其实还是通过具体应用解决较为方便!
怎样去掉多余的0
谢了,收藏;不过还是建议在程序中实现转换,在sql中实现转换个人认为比较麻烦 楼上给出的这个算法我很启发,但是有一点小问题,就是当整数部分为0(如0.85)时得出的结果与直接用char()函数得出的结果相同,即没有达到去前导0的效果。改进后的算法应该是:select rtrim(char(int(amt)))||substr(char(amt),posstr(char(amt),'.')) from table_name
其中amt是decimal型的字段名,table_name为表名。 有一个字段定义为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]