前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试462】如何将一个数字转换为字符串并且按照指定格式显示?

【DB笔试面试462】如何将一个数字转换为字符串并且按照指定格式显示?

作者头像
AiDBA宝典
发布2019-09-30 17:02:43
1.8K0
发布2019-09-30 17:02:43
举报
文章被收录于专栏:小麦苗的DB宝专栏

题目部分

如何将一个数字转换为字符串并且按照指定格式显示?

答案部分

在应用中,可能需要将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去掉空格。示例如下所示:

代码语言:javascript
复制
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程序员面试笔试宝典》,作者:李华荣。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档