Oracle number 类型转换为 varchar2「建议收藏」

Oracle number 类型转换为 varchar2「建议收藏」项目初期表结构设计是非常重要,在字段类型定义样也要格外小心,业务开展后,修改字段类型代价非常大。本文主要记录在oracle中number类型转换为varchar2数据类型方法以及案例演示。number类型的数据直接存人varchar2类型的字段中,会出现格式问题,如:.5,5.等to_char(number)可将number类型转换为varchar2类型,可以指定格式fmt(可选);参数n,可以是NUMBER、BINARY_FLOAT或BINARY_DOUBL

大家好,又见面了,我是你们的朋友全栈君。

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

to_char(number)

TO_CHAR(n [, fmt [, 'nlsparam' ] ])

  • 可将 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;
-- ==>#####

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163906.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BeanUtils如何优雅的拷贝List[通俗易懂]

    BeanUtils如何优雅的拷贝List[通俗易懂]前言BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于po、vo、dto的拷贝已经足够用了。但是其还是有一些不够完美的地方不足:不能拷贝list,而拷贝list的情况又大量存在,因此会有许多重复代码 for(Ssource:sources){Ttarget=newT();…

    2025年10月29日
    5
  • python运算符

    什么是操作符?简单的回答可以使用表达式4+5等于9,在这里4和5被称为操作数,+被称为操符。 Python语言支持操作者有以下几种类型。算术运算符比较(即关系)运算符赋值运算符

    2021年12月23日
    51
  • 解决Pycharm运行速度慢的方法「建议收藏」

    解决Pycharm运行速度慢的方法「建议收藏」用惯了Jupyter,Spyder的开发者切换到Pycharm时,发现不论是打开IDE的速度,还是调试的速度都慢的让人想砸电脑,笔者在这花了好长时间生闷气,最终总结了几个坑来解决运行速度慢的问题,希望能帮到大家。1.扩大Pycharm运行内存打开后找到-Xms-Xmx两行,增加运行内存(根据电脑配置,笔者是8G内存),可明显改善打开IDE的速度2.新建工程选择Python解释器笔者常用Anaconda,因此选用了它3.解决运行时查看变量速度慢的方法File->Setting-&gt

    2022年8月28日
    2
  • idea2021.12.13激活码_在线激活

    (idea2021.12.13激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4C3L012EAA-eyJsa…

    2022年3月30日
    57
  • python ffmpeg模块_ffmpeg python

    python ffmpeg模块_ffmpeg pythonAfghanistanAlandIslandsAlbaniaAlgeriaAmericanSamoaAndorraAngolaAnguillaAntarcticaAntiguaandBarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBeliz…

    2025年7月11日
    5
  • rsyslog详解

    rsyslog详解一、日志介绍日志概念日志是系统用来记录系统及应用程序运行时的一些相关信息的文本文件日志作用日志是为了保存相关程序的运行状态、错误信息等,为了对系统进行分析、保存历史记录以及在出现错误时发现、分析错误使用linux系统日志类型内核信息服务信息应用程序信息二、rsyslog1、rsyslog介绍rsyslog是linux系统中用来实现日志功能的服务。默认已经安装,并且自动启用。作用:主要用来采集日志,不生产日志其特性包括: 支持输出日志到各种数据库,如MySQ

    2022年9月24日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号