oracle to_char函数将number转成string

来源:互联网 发布:cnc数控编程多久能学会 编辑:程序博客网 时间:2024/05/05 00:31

很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使用Oracle 的SQL 函数 to_char可以实现这种转换。 
这个函数用来将DATE或NUMBER数据类型转换成可显示的字符串,格式是to_char(number_type, format_mask)。 
格式'999.99',9表示对应的某一个指定位数的值,如果是值是0则忽略不显示,如果指定位数没有值,则以空格表示。 
格式'0990.990',0表示对应的某一个指定位数的值,如果是值是0则显示为0,如果是没有值也显示为0。 
格式'FM990.90',FM表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。

以下为代码示例:

[sql] view plaincopy
  1. SQL> select to_char(12304.560,'999.99'from dual;   
  2. TO_CHAR(12304.560,'999.99')   
  3. ---------------------------   
  4. #######   
  5. SQL> select to_char(104.560,'999.99'from dual;   
  6. TO_CHAR(104.560,'999.99')   
  7. -------------------------   
  8. 104.56   
  9. SQL> select to_char(104.560,'99999.99'from dual;   
  10. TO_CHAR(104.560,'99999.99')   
  11. ---------------------------   
  12. 104.56   
  13. SQL> select to_char(104.560,'99999.990'from dual;   
  14. TO_CHAR(104.560,'99999.990')   
  15. ----------------------------   
  16. 104.560   
  17. SQL> select to_char(104.560,'0099.990'from dual;   
  18. TO_CHAR(104.560,'0099.990')   
  19. ---------------------------   
  20. 0104.560   
  21.   
  22. SQL>   
  23. SQL> select to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' as aa,   
  24. 2 length(to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%'as bb   
  25. from dual;   
  26. AA BB   
  27. ---------------- ----------   
  28. 0.70% 5   
  29. SQL>   
  30. SQL> select to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%' as aa,   
  31. 2 length(to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%'as bb   
  32. from dual;   
  33. AA BB   
  34. ---------------- ----------   
  35. 0.70% 16   


这是to_char将数字转换成字符串的常见操作功能,还有其他一些格式,见to_char(numeric)的格式模板:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. 模板 描述   
  2. 9 带有指定位数的值   
  3. 0 前导零的值   
  4. . (句点) 小数点   
  5. , (逗号) 分组(千)分隔符   
  6. PR 尖括号内负值   
  7. S 带负号的负值(使用本地化)   
  8. L 货币符号(使用本地化)   
  9. D 小数点(使用本地化)   
  10. G 分组分隔符(使用本地化)   
  11. MI 在指明的位置的负号(如果数字 < 0)   
  12. PL 在指明的位置的正号(如果数字 > 0)   
  13. SG 在指明的位置的正/负号   
  14. RN 罗马数字(输入在 1 和 3999 之间)   
  15. TH or th 转换成序数   
  16. V 移动 n 位(小数)  
  17. EEEE 科学记数。现在不支持。   

0 0