问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

to_char()的用法

发布网友 发布时间:2022-04-23 14:30

我来回答

2个回答

懂视网 时间:2022-04-08 06:17

 接下来再看看下面:

/*0.123 ---> ‘.123‘ */
SELEC TO_CHAR(0.123) FROM DUAL

 上面的结果 ‘.123‘ 在大多数情况下都不是我们想要的结果,我们想要的应该是 ‘0.123‘。

我们来看一下to_char函数的具体用法:

TO_CHAR ( n [, fmt [, ‘nlsparam‘]] )
该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR2类型的值。‘nlsparams‘指定由数值格式的元素返回的字符,包括:

.小数点字符

.组分隔符

.本地钱币符号

.国际钱币符号

变元的形式为:

‘NLS_NUMERIC_CHARACTERS="dg" NLS_CURRENCY="tcxt" NLS_ISO_CURRENCY=territory‘

其中d为小数点字符,g为组分隔符。

例 :TO_CHAR (17145,‘L099G999‘,‘NLS_NUMERIC_CHARACTERS=".," NLS_CURRENCY="NUD"‘)=NUD017,145

通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到‘0.123‘的值:

/*0.123 ---> ‘ 0.123‘ */ 
Select TO_CHAR(0.123,‘0.999‘) FROM DUAL
/*100.12 ---> ‘######‘ */ 
Select TO_CHAR(100.12,‘0.999‘) FROM DUAL
/*1.12 ---> ‘ 1.120‘ */ 
Select TO_CHAR(1.12,‘0.999‘) FROM DUAL

 ‘ 0.123‘是出来了,可是前面又多了一个空格。

对于 100.12 的值却是######,以及‘1.12‘的值变成了 ‘1.120‘。

我们重新确定一个新的需求:

1、去空格

2、小数点最多4位,最少保留2位。

    1--->‘1.00‘;1.1--->‘1.00‘;1.12-->‘1.12‘;1.1234--->‘1.1234‘;

    1.12345--->‘1.1235‘

最终实现如下:

/*
  FM :除空格  
  9999999.0099:允许小数点左边最大正数为7位,小数点右边最少2位,最多4位,且在第5位进行四舍五入
*/ 
Select TO_CHAR(123.0233,‘FM9999999.0099‘) FROM DUAL


PLSQL小经验一、 Oracle的to_char()函数功能很强大但是在用它格式化数值型数据时应该请注意以下几项。如果是小数如:0.23这样的数据经过to_char后再显示会变为.23,如果你为了让它显示出原来的0.23的话就得用To_char(要格式化的数值,’0.999’)保留三个小数,并显示但这里就要注意了。他为你截取小数的时候是四舍五入了。所以如果是要求截掉小数而不四舍五入的话就应该自己写个函数截下去后再规格化。以保证它不四舍五入。

二、 To_char(1.9999,’FM90.0999’)这个函数规格化时90.0999的含义是有9的地方如果有数字就显示如果没有数字就不显示,有0的地方在没有数字的时候也会有0来占位.但这样做也有一个很大的缺点,就是如果是整数时它也仍然会显示”.”,不要小瞧这个点,一般来讲页面上要显示的话这个点就是多余的.也给我们造成了不小的麻烦.还要自己再写函数来把这个小点搞定.

三、 对于日期型的Oracle倒时提供了一个好的处理方法,可以把日期做成数值型的.然后再To_char就能显示出你所需要的类型了.

四、 在使用select into时一定要注意,这种方法你一定要确认肯定会有数据被查出时才能使用.如果查询结果为空时会导致报错.还有一种情况是查出来的数据是多条也会报错.所以应该尽量便宜游标来做.会减少错误产生的机率.

五、 还有注意一点rownum不支持排序,就是说你想用这个来控制行数的话就会发现他没有按你指定的排序方式显示.,这是一个很难办的事.而且如果你用rownum=2这样的语句来输出第二行的话也是行不通的. 六、 最恶心的一点是Oracle对null的判断变态到极点.如果你说某个变量 aa=null它是判断不出来的.尽管aa的确是空.即使在选择条件里也是判断不出来的.不知道为什么,只好用nvl()这个函数来判断了.在条件之外可以用 aa is null 来判断.

六 补充一点.就是在写存储过程时要注意参数名不能与数据库字段名相同.否则Oracle会把这个参数名看成是字段名的,即使你用表的别名区分也不行.所以起参数名的时候一定要注意这点.了

Oracle常用函数TO_CHAR用法详解(转自博客园-小小草博文)

标签:

热心网友 时间:2022-04-08 03:25

Oracle函数to_char转化数字型指定小数点位数的用法
to_char,函数功能,就是将数值型或者日期型转化为字符型。
比如最简单的应用:
/*1.0123--->’1.0123’*/
Select TO_CHAR(1.0123) FROM DUAL
/*123--->’123’*/
Select TO_CHAR(123) FROM DUAL
Oracle中TO_DATE TO_CHAR格式
TO_CHAR 是把日期或数字转换为字符串
TO_CHAR 使用TO_CHAR函数处理数字
TO_CHAR(number, '格式')
TO_CHAR(salary,’$99,999.99’)
; 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);
Oracle to_char格式化函数
Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意:所有格式化函数的第二个参数是用于转换的模板。表 5-7. 格式化函数 函数 返回 描述 例子 to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp 'now','HH12:MI:SS') to_char(int, text) text 把 int4/int8 转换成 string to_char(125, '999') to_char(float, text) text 把 float4/float8 转换成 string to_char(125.8, '999D9') to_char(numeric, text) text 把 numeric 转换成 string to_char(numeric '-125.8', '999D99S') to_date(text, text) date 把 string 转换成 date to_date('05 Dec 2000', 'DD Mon YYYY') to_timestamp(text, text) date 把 string 转换成 timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY') to_number(text, text) numeric 把 string 转换成 numeric to_number('12,454.8-', '99G999D9S') 表 5-8. 用于 date/time 转换的模板 模板 描述 HH 一天的小时数 (01-12) HH12 一天的小时数 (01-12) HH24 一天的小时数 (00-23) MI 分钟 (00-59) SS 秒 (00-59) SSSS 午夜后的秒 (0-86399) AM or A.M. or PM or P.M. 正午标识(大写) am or a.m. or pm or p.m. 正午标识(小写) Y,YYY 带逗号的年(4 和更多位) YYYY 年(4和更多位) YYY 年的后三位 YY 年的后两位 Y 年的最后一位 BC or B.C. or AD or A.D. 年标识(大写) bc or b.c. or ad or a.d. 年标识(小写) MONTH 全长大写月份名(9字符) Month 全长混合大小写月份名(9字符) month 全长小写月份名(9字符) MON 大写缩写月份名(3字符) Mon 缩写混合大小写月份名(3字符) mon 小写缩写月份名(3字符) MM 月份 (01-12) DAY 全长大写日期名(9字符) Day 全长混合大小写日期名(9字符) day 全长小写日期名(9字符) DY 缩写大写日期名(3字符) Dy 缩写混合大小写日期名(3字符) dy 缩写小写日期名(3字符) DDD 一年里的日子(001-366) DD 一个月里的日子(01-31) D 一周里的日子(1-7;SUN=1) W 一个月里的周数 WW 一年里的周数 CC 世纪(2 位) J Julian 日期(自公元前4712年1月1日来的日期) Q 季度 RM 罗马数字的月份(I-XII;I=JAN)-大写 rm 罗马数字的月份(I-XII;I=JAN)-小写 所有模板都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀 'FX' 只是一个全局修改器。
表 5-9. 用于日期/时间模板 to_char() 的后缀 后缀 描述 例子 FM 填充模式前缀 FMMonth TH 大写顺序数后缀 DDTH th 小写顺序数后缀 DDTH FX 固定模式全局选项(见下面) FX Month DD Day SP 拼写模式(还未实现) ddsp

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 xsmax手机右边屏幕失灵 手机屏幕上面部分失灵了怎么办? OPPOA11手机换完屏幕,右边不灵怎么回事? 苹果11右边屏幕有一竖条失灵? 手机屏幕右边失灵 vivo手机屏一有手机屏幕右侧失灵? 手机屏幕触屏有一边失灵了怎么办? 我的手机触屏失灵了左边还勉强,右边完全失灵? qq被盗为什么冻结不了? 手机屏幕右上角失灵? 现在手机出现了屏幕失灵的状态,右边和下边点不了其他还可以,怎么修? 我的qq号被人盗了,而且修改了密码,我怎么冻结qq 为什么“琛”字起名少? 豆腐有几种做法最好吃 豆腐怎么吃最好吃? 豆腐有几种做法,说说你们最爱吃的一种豆腐,怎么做呢? 豆腐有很多做法,你认为最好吃的做法是什么? 家常豆腐最好吃的做法有哪些? 豆腐的10个简单做法有哪些? 很多人都爱吃豆腐,豆腐都有哪些比较简单的做法? oracle数据库的 to char 和to date 区别 to_char函数疑问 to_char()的用法须知 mysql有to char函数吗 如何自定义excel函数实现sql中的to_char功能? SQL中的TO_CHAR与TO_DATE分别是怎么用的 oracle to_char函数的使用 oracle里nvl,to_char,decode这些函数怎么用啊? Oracle 的to_char函数格式化出来的结果中含有空格 Oracle11g中,如何用TO_CHAR()函数将数字转换为带人民币符号的货币格式... oracle的to_char函数能不能把时间精确到毫秒级,给个例子 oracle to_char 函数中 格式化参数 fm 是什么意义 oracle 关于to_char问题: 微信付款码的数字是不是循环利用 hibernate中DetachedCriteria连表查询时如何将关联字段连接时添加to_char函数? oracle中的to_char() 在sqlserver2008中如何使用? 如下面的语句_百度知 ... 微信商家付款码瞬间更新好几次 c#中Convert.ToChar()的问题 微信收款二维码是静态还是动态 苹果手机冷了为啥关机