您的格式模型仍然必须允许值的符号.没有办法向TO_CHAR()表明它永远不会是负数(如果你的值实际上是这种情况).即使使用4位数字,格式允许允许五个字符,您可以从列标题中看到:

SQL> SELECT TO_CHAR(1234, 'FM0000') FROM DUAL;

TO_CH

-----

1234

请注意,列标题是TO_CH,它是五​​个字符,而不是四个字符.如果您有一个负数(如Florin建议的那样),您需要额外的空间:

SQL> SELECT TO_CHAR(-1234, 'FM0000') FROM DUAL;

TO_CH

-----

-1234

如果没有FM修饰符,则返回的字符串中的前导空格为正值,因此LENGTH(TO_CHAR(1234,’0000′))为5但LENGTH(TO_CHAR(1234,’FM0000′))为4,因为前导空格(通常使列中的值右对齐)被抑制.如果为负值,则返回字符串的长度为5.格式模型确定返回的数据类型是varchar2(5)以允许符号,即使您知道永远不会有负值 – 格式模型也没有任何方法可以反映这一点.

如果您强制显示符号,也可以使用正值查看它:

SQL> SELECT TO_CHAR(1234, 'FMS0000') FROM DUAL;

TO_CH

-----

+1234

在TO_CHAR调用中,您无法做任何事情.作为RPAD解决方法的替代方法,您可以使用SUBSTR仅获取格式化字符串的最后四个字符:

SQL> SELECT SUBSTR(TO_CHAR(12345, 'FM0000'), -4) FROM DUAL

SUBSTR(TO_CHAR(1

----------------

####

但如果你确实有负值,你就会失去这个标志:

SQL> SELECT SUBSTR(TO_CHAR(-1234, 'FM0000'), -4) FROM DUAL

SUBSTR(TO_CHAR(-

----------------

1234

使用你的RPAD你保持标志但丢失了第四个有效数字:

SQL> SELECT RPAD(TO_CHAR(-1234, 'FM0000'), 4) FROM DUAL

RPAD(TO_CHAR(-12

----------------

-123

这也不好.你可能不必处理负数;但如果您处理的数字大于预期(即,当您只期望< = 9999时,您得到的数字> = 10000)那么我不确定您是否可以确定您不会看到(无效?)在某些时候的负数.这似乎是一个数据问题,而不是格式问题,无论如何在某种程度上. 根据你对Ollie的评论,对于未来的代码维护者来说,另一种可能更明确和更明显的方法是在CASE中拼写出来:

SELECT CASE WHEN n BETWEEN 0 AND 9999 THEN TO_CHAR(n, 'FM0000') ELSE '####' END FROM DUAL

如果你愿意,这也允许你将字符串列保留为null或使用其他一些魔术值而不是####.

另一种修改价值的方法,也可能更清楚,就是使用CAST:

SQL> SELECT CAST(TO_CHAR(12345, 'FM0000') AS VARCHAR2(4)) FROM DUAL;

CAST

----

####

oracle 填入编号,sql – 带填充模式的Oracle to_char格式编号(FM0000)相关推荐

  1. java list填入table_JavaFX从ObservableList填充TableView

    我正在尝试使用ObservableList中的数据填充TableView . 我以前做过这个,但由于某种原因我现在无法让它工作 . 我没有得到任何例外或任何东西,但它只是不添加任何东西到表 . thi ...

  2. oracle录入excel无sql,Excel数据导入到oracle(待上传的Excel表格;oracle的数据表;PLSQL)...

    一.打开pl/sql,如图所示界面,点击菜单栏中的T00LS ODBC Imtorper,打开ODBC Importer选项框​ T00LS ODBC Imtorper 二.在Data fromODB ...

  3. oracle 交叉链接,Oracle里的交叉SQL语句写法-数据库专栏,ORACLE

    实例说明 资料表结构(红色为主键)==> 主表:test_part_cost_tab(料号资料表) part_no  varchar2(20) part_name  varchar2(50) 从 ...

  4. oracle语法_PG数据库sql语法总结,与Oracle有什么不同?

    概述 今天主要对PG数据库的一些基本SQL语句用法做个介绍,做个简单了解,也做备忘! 下面主要用例子来说明. 1.建表语句 create table test (id int8 primary key ...

  5. python查询sqlserver视图_如题:sqlserver连接Oracle数据库,在sql查询分析器中查询oracle中的视图,根据时间字段查询,SQL语句...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. sql导入数据以及列表编号设置自动填充

    将excel表格直接导入到sql server中 如何利用图形界面设置编号进行自动填充递增 如何利用代码设置编号进行自动填充递增 create table 一个种子(编号 int identity(1 ...

  7. oracle 创建模式语句,ORACLE基本使用SQL语句以及归档模式的操作

    --1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...

  8. Oracle 复制表结构带索引,oracle复制表的sql语句

    oracle复制表的sql语句 如下,表a是数据库中已经存在的表,b是准备根据表a进行复制创建的表: 1.只复制表结构的sql create table b as select * from a wh ...

  9. c语言如何自动填写验证码,小程序 自带样式的验证码自动填入

    一.业务场景:像ios手机上的获取到验证码,,会在键盘上显示,点击,会自动填入到输入框里面:这时候输入框是一个input还好,,他会自动填入,但是现在要求是验证码的6位数字是分开的,原生的一个inpu ...

最新文章

  1. 看懂SQL Server的查询计划(绝对好文!)
  2. 当深度学习遇上图: 图神经网络的兴起 | 赠书
  3. 云服务器怎么设置数据库文件,怎么设置云服务器数据库
  4. 从零点五开始,做半个不能玩的小游戏(二)
  5. WebStorm使用ES6
  6. 中国人数学好,数学思维差?
  7. IDEA发布新版本,支持禅模式(免打扰)!
  8. java自动封箱_Java程序员面试,自动封箱/拆箱原理与包装类的缓冲机制你知道么?(转)...
  9. UncategorizedSQLException异常处理办法
  10. 关于JSP表单的一些技巧和经验
  11. java监控网卡流量_流量监控脚本监控网卡
  12. 正版饥荒服务器怎么弄,饥荒联机版本地服务器如何创建
  13. 集成电路的设计 —— 晶体管
  14. matlab双因素模型,matlab双因素方差分析
  15. 高股息组合与指数基金谁好?
  16. Pandownload 之后,非它莫属
  17. ”去他丫的北上广,老子要去成都定居了,Android-Binder机制及AIDL使用
  18. 容错服务器的性能指标,容错服务器ft2500规格配置.doc
  19. 汇编、链接、加载的原理
  20. MATLAB GUI学习———简易计算器

热门文章

  1. Java web项目报错 Java compiler level does not match the version of the installed Java project facet.
  2. 小牛想要进大厂,距离拿百万高薪,进入AI行业你还缺哪些?
  3. SIGIR 2021 | 基于不确定性正则化与迭代网络剪枝的终身情感分类方法
  4. ResNet才是YYDS!新研究:不用蒸馏、无额外数据,性能还能涨一波
  5. 60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline)
  6. 从 Word2Vec 到 BERT
  7. 用ram实现寄存器堆_Verilog如何实现低功耗设计?
  8. 牛客题霸 NC6 二叉树的最大路径和
  9. 《操作系统》实验报告——主存空间的分配与回收
  10. JAVA——保持cookie登录状态的HttpClient封装工具类