ORACLE TO_CHAR函数格式化数字的出现空格的原因

在这篇博客SQL挑战——如何高效生成编码里面我由于需要将数字格式化为字符,像12需要格式化0012这样的字符,所以使用了TO_CHAR(数字,'0000')这样的写法,后面0000表示缺省补零,测试过程中,我发发现TO_CHAR(number,'0000') 会多一个空格。有点纳闷为什么了会多一个空格。

后面经过查看官方文档、同事讨论以及网友提供的资料,终于把这个问题给弄清楚了。下面梳理、总结于此,希望对其它人有所帮助。

在官方文档https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34570里面你能看到一段介绍

Number Format Elements

A number format model is composed of one or more number format elements. The tables that follow list the elements of a number format model and provide some examples.

Negative return values automatically contain a leading negative sign and positive values automatically contain a leading space unless the format model contains the MI, S, or PR format element.

注意红色部分,意思是Number类型转换为字符时,负数会返回前面包含负号的字符串,正数则会返回前面包含空格的字符串,除非格式模式包含MI、S、或PR元素。查看TO_CHAR(4, '0000')返回的字符串长度,你会发现其长度为5.

1: SQL> SELECT TO_CHAR(4, '0000') FROM DUAL;2:3: TO_CH4: -----5: 00046:7: SQL> SELECT LENGTH(TO_CHAR(4, '0000')) FROM DUAL;8:9: LENGTH(TO_CHAR(4,'0000'))10: -------------------------11: 512:13: SQL> SELECT TO_CHAR(-4, '0000') FROM DUAL;14:15: TO_CH16: -----17: -0004

那么如何解决这个问题呢,目前有两种方法,一种方法是用TRIM去空格,另外一种是使用参数MI(MI参数是正数的空格放到字符串后面,将负数的负号放置在字符串后面),关于参数MI的解释如下所示:

Returns negative value with a trailing minus sign (-).

Returns positive value with a trailing blank.

Restriction: The MI format element can appear only in the last position of a number format model.

返回负值与尾随的负号 (-)。

返回正值尾随空白。

限制: MI 格式元素可以只能出现在数字的格式模式的最后一个位置。

其实这些还只是TO_CHAR函数的冰山一角,如果你通读文档https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34570那么你会发现其实你所掌握的TO_CHAR函数还只是个皮毛而已。一个TO_CHAR函数如此强大,可见ORACLE的博大精深。

参考资料:

http:[email protected]/blog/static/121022611201454111640254/

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34570

oracle空格转换函数,ORACLE TO_CHAR函数格式化数字的出现空格的缘故相关推荐

  1. 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年 ...

  2. Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理 Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-0 ...

  3. oracle编码转换utf16,oracle编码转换:AL32UTF8-ZHS16GBK

    --修改Oracle数据库字符集为utf-8: SQL>conn / as sysdba; SQL>shutdown immediate; SQL>startup mount; SQ ...

  4. oracle rowid转换,【oracle】rowid解读

    rowid记录数据的物理位置,通过rowid可以知道数据存放在那个数据文件的第几个块第几行. --------------------- extended rowid format --------- ...

  5. 如果去掉数学前后的空格_如何取消excel表格中数据前的空格-Excel 如何去除单元格中数字前后的空格...

    excel单元格,数字前有空格(字符),怎么批量把空... 使用替换功能,批量处理 参考excel版本:2010(其他版本操作基本相同) 详细操作步骤及动画演示: 1.CTRL H,调出替换对话框 2 ...

  6. oracle把ascii吗,oracle中ascii函数及to_char函数使用及编码间的转换

    一.ascii->char SQL> CREATE OR REPLACE PROCEDURE pasc_to_char(one IN VARCHAR2) 2 --RETURN VARCHA ...

  7. MySql函数, 实现Oracle中的to_data和to_char函数

    1. to_date mysql中用法为:str_to_date('2017-05-01 23:59:59','%Y-%m-%d %T') 2. to_char mysql中的用法:  date_fo ...

  8. oracle date 转换 timestamp,Oracle timestamp类型转换成date类型

    今天需要根据时间判断,统一修改某一个字段的数据.然后打开数据库发现,时间类型为timestamp类型.如下: 然后呢,这对我不是喝口水就可以解决的问题吗? 解决方案如下:我需要改这张表某个字段的内容, ...

  9. oracle时间戳转换整数,oracle将时间戳转换为其他时间掩码

    如何将这些数字列(timestamp,event_dt)转换为日期或时间掩码? 我想这一点:oracle将时间戳转换为其他时间掩码 select to_char(timestamp,'YYYY-MON ...

最新文章

  1. 《你的误区》《少有人走过的路》下载doc格式
  2. Python多进程multiprocessing共享数据Value(包括常用的整数、字符串)、列表及字典以及Queue
  3. Genymotion模拟器安装ARM架构编译应用失败解决方案
  4. 踏上Silverlight的征程 体验Silverlight之美
  5. 《深入理解 Spring Cloud 与微服务构建》第七章 负载均衡 Ribbon
  6. c语言三个月兴业,c语言输出2015年日历,要求三个月在一行...
  7. Android UI学习之---Button
  8. 2018注册测绘师各地报名时间和注意事项!莫错过哦!
  9. 测试 tolua 例子 TestErrorStack
  10. 使用阿里云Maven仓库
  11. CQF笔记Primer金融基础
  12. 基因型填充中的phasing究竟是什么
  13. 一级消防工程师【技术实务】(爆炸)
  14. 正则表达式——常用正则表达式验证有效数字、密码、真实姓名、邮箱、身份证号码及其正则捕获懒惰性原理
  15. 2023电工杯数学建模B题思路模型
  16. 云计算方向研究热点、 云计算有怎样的发展前景?
  17. 高新技术企业3年认定过期了怎么办
  18. seo网站推广方法简介
  19. miui 8.5 android,两年前的小米5突遭MIUI9 8.5.3更新!妥妥上安卓8.0
  20. 埃瓦里斯特·伽罗瓦Évariste Galois

热门文章

  1. 7.21.05 中断流程控制语句
  2. MAC ox下配置mysql
  3. 克服游戏运营中IB的长尾挑战
  4. 大作完成了一部分,陆续往上放吧
  5. 软件测试用python一般用来做什么-想要成为一个优秀的软件测试人员,应该学些什么?...
  6. python使用缩进来体现代码之间的逻辑关系-Python 使用缩进来体现代码之间的逻辑关系 ....
  7. python对笔记本电脑的要求-如何用Python在笔记本电脑上分析100GB数据(上)
  8. python装饰器原理-看完这篇文章还不懂Python装饰器?
  9. python如何爬虫-如何使用python爬虫爬取要登陆的网站
  10. python编程入门指南怎么样-Python 应该怎么学?