【DB笔试面试462】如何将一个数字转换为字符串并且按照指定格式显示?
如何将一个数字转换为字符串并且按照指定格式显示?
♣ 答案部分
在应用中,可能需要将0.007007040000转换成0.70%,或需要显示“0.00”、“1.20”等类似的数据格式,此时可以使用TO_CHAR函数来转换。这个函数可以用来将DATE或NUMBER数据类型转换成可显示的字符串,格式是TO_CHAR(number_type,format_mask),format_mask转换格式有多种,如下表所示:
格式 | 含义 |
9 | 显示数字,9表示对应的某一个指定位数的值,若值是0则忽略不显示,若指定位数没有值,则以空格表示。 |
0 | 显示数字,0表示对应的某一个指定位数的值,若值是0则显示为0,若指定位数没有值也显示为0。 |
FM或fm | FM表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。 |
. | 在指定位置显示小数点。 |
, | 在指定位置显示逗号。 |
$ | 在数字前加美元。 |
L | 在数字前面加本地货币符号。 |
C | 在数字前面加国际货币符号。 |
G | 在指定位置显示组分隔符。 |
D | 在指定位置显示小数点符号(.)。 |
PR | 尖括号内负值。 |
MI | 在指明的位置的负号(如果数字 < 0)。 |
PL | 在指明的位置的正号(如果数字 > 0)。 |
S | 带负号的负值(使用本地化)。 |
SG | 在指明的位置的正/负号。 |
RN | 罗马数字(输入在 1 和 3999 之间)。 |
TH或th | 转换成序数。 |
V | 移动 n 位(小数) |
EEEE | 科学记数。现在不支持。 |
需要注意的是,在NUMBER类型转换为字符串时,负数会返回前面包含负号的字符串,正数则会返回前面包含空格的字符串,除非格式模式包含MI、S、或PR元素。即LENGTH(TO_CHAR(4, '0000'))的值其实是5,所以需要使用FM格式或ltrim去掉空格。示例如下所示:
SYS@PROD1> SELECT TO_CHAR(0.00, 'FM9999999999999999990.00') A,
2 TO_CHAR(ROUND(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' AS B,
3 LENGTH(TO_CHAR(4, '0000')) C,
4 LENGTH(TO_CHAR(4, 'FM0000')) C1,
5 LENGTH(LTRIM(TO_CHAR(4, '0000'))) C2
6 FROM DUAL;
A B C C1 C2
----------------------- ---------------- ---------- ---------- ----------
0.00 0.70% 5 4 4
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
---------------优质麦课------------
详细内容可以添加麦老师微信或QQ私聊。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
更多相关文章
- BRCM5.02编译七:No package 'uuid' found
- SD卡插上一体机时显示文件或目录损坏且无法读取请问咋才能修复
- 【wrodpress】wordpress发表文章后无法显示
- Git 工具和指令集合
- PHP获取访问URL指定参数值
- 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题
- 【DB笔试面试756】在Oracle的DG中,有哪些重要的参数,它们分别代表
- 编译安装mysql-5.6.40
- Shell编程案例:统计指定目录下指定文件大小的个数及总和