怎样去掉多余的0
有一个字段定义为ARPU_VALUE DECIMAL(18, 2),当我用CHAR对它转换时,结果变为0000000000000062.70,怎么把前面多余的0去掉?
作者: ninth 发布时间: 2005-06-07
自己顶
作者: ninth 发布时间: 2005-06-08
变通一下, 不用char函数来转换类型.
在应用里还是用double类型把数据取出来
然后用C里的sprintf函数把数字转换成字符串,就没有前导0了!
在应用里还是用double类型把数据取出来
然后用C里的sprintf函数把数字转换成字符串,就没有前导0了!
作者: 我是马甲 发布时间: 2005-06-08
char(bigint(ARPU_VALUE))
作者: zcj_csdn 发布时间: 2005-07-03
应该在应用程序里先取出数值,再转换成char类型,直接转不好转。
作者: rheet1978 发布时间: 2005-07-03
试一下:
复制代码
实际为:
复制代码
思路为通过posstr取出整数位置,再用substr截取!
还有其它办法,比如:整数||小数等
其实还是通过具体应用解决较为方便!
- 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截取!
还有其它办法,比如:整数||小数等
其实还是通过具体应用解决较为方便!
作者: mymm 发布时间: 2005-07-04
谢了,收藏;不过还是建议在程序中实现转换,在sql中实现转换个人认为比较麻烦
作者: rheet1978 发布时间: 2005-07-05
楼上给出的这个算法我很启发,但是有一点小问题,就是当整数部分为0(如0.85)时得出的结果与直接用char()函数得出的结果相同,即没有达到去前导0的效果。
改进后的算法应该是:select rtrim(char(int(amt)))||substr(char(amt),posstr(char(amt),'.')) from table_name
其中amt是decimal型的字段名,table_name为表名。
改进后的算法应该是:select rtrim(char(int(amt)))||substr(char(amt),posstr(char(amt),'.')) from table_name
其中amt是decimal型的字段名,table_name为表名。
作者: vprofessor 发布时间: 2011-01-10