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;
-- ==>#####

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • accept 函数_case when函数

    accept 函数_case when函数2.关于AcceptEx  使用此函数时,要包含头文:Mswsock.h,同时要链接:Mswsock.lib。可在源程序中加入下面的语句,这样在编译时,将自动链接Mswsock.lib。  #pragmacomment(lib,”Mswsock.lib”)    下面是使用AcceptEx函数的示例代码:  #defineSTRICT  #define_WIN32_WINNT0x050

  • c语言三目运算符例子_单目运算符与双目运算符

    c语言三目运算符例子_单目运算符与双目运算符1.运算方向从左往右,从右往左结合,只有一个表达式被计算百度百科:三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值…

  • setContentView剖析[通俗易懂]

    setContentView剖析[通俗易懂]1、setContentView的作用是将View加载到根view之上,这样当显示view时,先显示根view,然后在显示子view,以此类推,最终将所有view显示出来。2、setContentView必须要放在findviewbyid之前,因为view在加载之前是无法引用的。3、setContentView最本质的作用是为要显示的view分配内存。4、act

  • vue的$attrs_vue获取list集合中的对象

    vue的$attrs_vue获取list集合中的对象​说明本文用示例介绍Vue的$attrs和$listener的用法官网API—Vue.js$attrs和$listeners介绍Vue2.4中,引入了attrs和listeners,新增了inheritAttrs选项。$attrs:包含了父作用域中没有被prop接收的所有属性(不包含class和style属性)。可以通过v-bind=”$attrs”直接将这些属性传入内部组件。$

  • Kong插件开发向导

    Kong插件开发向导转载李亚飞大佬的文章:https://www.lyafei.com/简介前面洋洋洒洒写了那么多文章,Kong搭建、Konga搭建、Kong插件开发工具包、Lua算法实现等等,就为了这篇Kong插件开发铺垫,在进一步讨论之前,有必要再简要阐述下Kong是如何构建的,特别是它如何与Nginx集成,以及它与Lua脚本之间的关系。使用lua-nginx-module模块可以在Nginx中启用Lua脚本功能,Kong与OpenResty一起发布,OpenResty中已经包.

  • 为什么领导不喜欢提拔老实人?退休的领导说出了实话

    为什么领导不喜欢提拔老实人?退休的领导说出了实话

发表回复

您的电子邮箱地址不会被公开。

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