Oracle to_char 函数详解
来源: 阅读:2346 次 日期:2014-08-25 10:49:35
温馨提示: 小编为您整理了“Oracle to_char 函数详解”,方便广大网友查阅!

[导读]to_char,函数功能,就是将数值型或者日期型转化为字符型。

to_char,函数功能,就是将数值型或者日期型转化为字符型。

比如最简单的应用:

Select TO_CHAR(1.0123) FROM DUAL

Select TO_CHAR(123) FROM DUAL

接下来再看看下面:

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'的值:

Select TO_CHAR(0.123,'0.999') FROM DUAL

Select TO_CHAR(100.12,'0.999') FROM DUAL

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'

最终实现如下:

Select TO_CHAR(123.0233,'FM9999999.0099') FROM DUAL

二、 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会把这个参数名看成是字段名的,即使你用表的别名区分也不行.所以起参数名的时候一定要注意这点了.

更多信息请查看IT技术专栏

更多信息请查看数据库
手机网站地址:Oracle to_char 函数详解
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map