项目初期表结构设计是非常重要,在字段类型定义样也要格外小心,业务开展后,修改字段类型代价非常大。本文主要记录在 oracle 中 number 类型转换为 varchar2 数据类型方法以及案例演示。
number类型的数据直接存人 varchar2类型的字段中,会出现格式问题,如:.5, 5. 等

to_char(number)

  • 可将 number 类型转换为 varchar2 类型,可以指定格式 fmt(可选);
  • 参数n,可以是 NUMBER、BINARY_FLOAT 或 BINARY_DOUBLE 类型;
  • nlsparam 参数指定了数值格式的元素返回的字符:包括:小数点字符(d)、组分隔符(g)、本地货币符号、国际货币符号。

格式化修饰符 FM

  • 9: 代表如果存在数字则显示数字,不存在数字为空字符串(非FM格式则会补空格);
  • 0: 代表如果存在数字则显示数字,不存在数字则显示0;
  • 小数会做四舍五入处理,如果不想四舍五入,现将数据做 trunc 处理后,再转换格式;

注意点:

  • 转换整数需要注意末尾是否多了小数点;
  • 转换小于1的小数首位的0会丢失;
  • 数据长度大于 fmt 定义的长度,转换会发生异常;

基本用法


-- 9 不会补占位符
select to_char(123.45, 'FM9999.999') from dual;
-- ==>-- 补占位符 0
select to_char(123.45, 'FM0000.000') from dual;
-- ==>0123.450-- 四舍五入
select to_char(123.4567, 'FM9999.999') from dual;
-- ==>123.457
select length(to_char(123.4567, 'FM9999.999')) from dual;
-- ==> 7

整数格式化问题


select to_char(123, 'FM9999.999') from dual;
-- ==>123.-- 解决方案1
select regexp_replace(to_char(123, 'FM9999.999'), '\.$', '') from dual;
-- ==>123
-- 解决方案2
select to_char(123, 'FM9999.099') from dual;
-- ==>123.0

小数格式化问题(小于1的数)

  • 建议格式化数值,如果不确定是整数,还是小于1的数,在小数点左右使用 0 作为占位符;

-- 小数格式化问题(小于1的数)
select to_char(0.123, 'FM9999.999') from dual;
-- ==>.123-- 解决方法
select to_char(0.123, 'FM9990.999') from dual;
-- ==>0.123

数据太长导致的错误

-- 数据太长导致的错误:
select to_char(123.4567, 'FM99.9') from dual;
-- ==>#####

Oracle number 类型转换为 varchar2相关推荐

  1. 【NUMBER】有关Oracle NUMBER类型定义中precision和scale的测试和总结

    http://space.itpub.net/519536/viewspace-557312 [NUMBER]有关Oracle NUMBER类型定义中precision和scale的测试和总结 上一篇 ...

  2. oracle是堆屎山,Oracle NUMBER 类型细讲

    1>.NUMBER类型细讲: Oracle number datatype 语法:NUMBER[(precision [, scale])] 简称:precision --> p scal ...

  3. Oracle Long类型转换为Clob类型

    INSERT INTO sammy_test_clob    SELECT TO_LOB (report_xml)      FROM qm_s_report     WHERE report_nam ...

  4. oracle number类型_一文看懂Oracle分页实现方案的三种方式

    Oracle分页实现 闲来无事,整理下Oracle.mysql.mssql以及PG数据库的分页实现方式,大家可以简单做个对比,看下不同数据库在分页这块是怎么实现的.今天先介绍一下Oracle分页的实现 ...

  5. oracle number类型能存空吗_《听雪楼》《白发》成爆款类型剧的效仿者,古装剧真的能回暖吗?...

    锋芒智库丨荼蘼 古装一限就是五六年,去年<延禧攻略><如懿传><香蜜沉沉烬如霜>的大热让古装剧重回剧集市场C位,紧接着<知否知否应是绿肥红瘦>(以下简称 ...

  6. oracle varchar2() 占几个字母,Oracle number date varchar2字段类型占用空间大小

    oracledate类型占用存储空间是7个字节oraclevarchar2类型占用存储空间是每个字符占用一个字节oraclenumber类型占用存储空间是几个字节number最少占用两个字节, ora ...

  7. ORACLE 中NUMBER类型默认的精度和Scale问题

    在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P 是Precison的英文 ...

  8. oracle double 两位小数点,【Oracle】number类型保留小数位

    SQL> SELECT 2 TO_CHAR(123, '9990.00') A, 3 TO_CHAR(5.8, '9990.00') B, 4 TO_CHAR(.46, '9990.00') C ...

  9. mysql long varchar2_案例:Oracle数据库long查询结果转换为varchar2类型方法的操作步骤...

    天萃荷净 将Oracle数据库查询出来的long结果转换为varchar2类型数据 来自Thomas Kyte <Oracle9i/10g/11g编程艺术> 12章节中.由于long的操作 ...

最新文章

  1. How to set window title name on Oracle EBS Form?
  2. python bool类型_Python 的内置数值类型
  3. ThreadPoolExecutor的七个参数详解
  4. raptor五个数排序流程图_经典算法系列之:选择排序
  5. Linux 查看显存带宽,Vega 20规格与Vega 10相近,显存带宽翻倍,但目前只能跑Linux - 超能网 - IT帮...
  6. string matching(HDU-6629)
  7. 文献阅读软件_推荐一款阅读英文文献的神器,效率高不少,理解深不少!
  8. LeetCode() Reorder List
  9. Ubuntu 安装 tensorflow-gpu 1.4 包含 CUDA 8.0 和cuDNN
  10. OpenGL 编程指南(第八版)学习笔记——1 OpenGL概述
  11. 一个B站下载视频的网站
  12. 分享Echarts饼状图显示信息,内容,值,百分比都显示的代码
  13. 上上下下左右左右BA
  14. 微表情识别的图片预处理(python版)
  15. 图片怎么修改尺寸大小?在线调整图像大小的方法
  16. 深圳租房数据可视化分析【Plotly库绘图】
  17. mPaaS客户端基线升级踩坑先升到10.1.32再升到10.1.60(iOS)
  18. 控件的移动事件和双击事件
  19. matlab错误: 服务器出现意外情况。
  20. Redis中List数据类型

热门文章

  1. java 毫秒转时分秒格式(Java中将毫秒数转为*天*小时*分*秒)
  2. 生活-象棋-蹩马腿-1
  3. VS2010中使用zxing识别图片二维码
  4. 2022年进口葡萄酒市场分析
  5. 我很喜欢研究这些比较酷的效果
  6. 大数据开发岗位的几个方向
  7. 物联网卡设置_物联卡中心:物联网卡这样设置一下上网全程4G,建议收藏!
  8. Spark并行度的设定
  9. 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】
  10. 灵狐插件与IDEA的集成