度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 795|回复: 2
打印 上一主题 下一主题

[分享] oracle to_char函数将number转成string

[复制链接]

348

主题

3572

帖子

9255

积分

论坛元老

Rank: 8Rank: 8

积分
9255
跳转到指定楼层
楼主
发表于 2020-5-21 00:20:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 万望 于 2016-6-21 00:20 编辑

很多数据转换处理操作时,会遇到将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类似。
  1. select to_char(12304.560,'999.99') from dual;
复制代码

  1. select to_char(104.560,'999.99') from dual;
复制代码

  1. select to_char(104.560,'99999.99') from dual;
复制代码

  1. select to_char(104.560,'99999.990') from dual;
复制代码

  1. select to_char(104.560,'0099.990') from dual;
复制代码


  1. select to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' as aa,
  2. length(to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%') as bb
  3. from dual;
复制代码

  1. select to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%' as aa,
  2. length(to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%') as bb
  3. from dual;
复制代码




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


模板 描述
9 带有指定位数的值
0 前导零的值
. (句点) 小数点
, (逗号) 分组(千)分隔符
PR 尖括号内负值
S 带负号的负值(使用本地化)
L 货币符号(使用本地化)
D 小数点(使用本地化)
G 分组分隔符(使用本地化)
MI 在指明的位置的负号(如果数字 < 0)
PL 在指明的位置的正号(如果数字 > 0)
SG 在指明的位置的正/负号
RN 罗马数字(输入在 1 和 3999 之间)
TH or th 转换成序数
V 移动 n 位(小数)(参阅注解)
EEEE 科学记数。现在不支持。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
沙发
发表于 2020-5-21 14:24:04 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-5-21 14:25:08 | 只看该作者
有意思!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-9-29 02:11 , Processed in 0.127065 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表