The following are number examples for the to_char functionto_char( ) would return
to_char( ) would return
to_char( $) would return $
to_char( ) would return
The following is a list of valid parameters when the to_char function is used to convert a date to a string These parameters can be used in many combinations
Parameter | Explanation | YEARYear
spelled outYYYY
digit yearYYY
YY
YLast or digit(s) of yearIYY
IY
ILast or digit(s) of ISO yearIYYYdigit year based on the ISO standardQQuarter of year ( ; JANMAR = )MMMonth (; JAN = )MONAbbreviated name of monthMONTHName of month padded with blanks to length of charactersRMRoman numeral month (IXII; JAN = I)WWWeek of year () where week starts on the first day of the year and continues to the seventh day of the yearWWeek of month () where week starts on the first day of the month and ends on the seventhIWWeek of year ( or ) based on the ISO standardDDay of week ()DAYName of dayDDDay of month ()DDDDay of year ()DYAbbreviated name of dayJJulian day; the number of days since January BCHHHour of day ()HHHour of day ()HHHour of day ()MIMinute ()SSSecond ()SSSSSSeconds past midnight ()FFFractional seconds
The following are date examples for the to_char function
to_char(sysdate yyyy/mm/dd); would return //
to_char(sysdate Month DD YYYY); would return July
to_char(sysdate FMMonth DD YYYY); would return July
to_char(sysdate MON DDth YYYY); would return JUL TH
to_char(sysdate FMMON DDth YYYY); would return JUL TH
to_char(sysdate FMMon ddth YYYY); would return Jul th
You will notice that in some examples the format_mask parameter begins with FM This means that zeros and blanks are suppressed This can be seen in the examples below
to_char(sysdate FMMonth DD YYYY); would return July
to_char(sysdate FMMON DDth YYYY); would return JUL TH
to_char(sysdate FMMon ddth YYYY); would return Jul th
The zeros have been suppressed so that the day component shows as as opposed to
Oracle函数to_char转化数字型指定小数点位数的用法
to_char函数功能就是将数值型或者日期型转化为字符型
比如最简单的应用
/*>*/
Select TO_CHAR() FROM DUAL
/*>*/
Select TO_CHAR() FROM DUAL
接下来再看看下面
/* > */
SELEC TO_CHAR() FROM DUAL
上面的结果 在大多数情况下都不是我们想要的结果我们想要的应该是
我们来看一下to_char函数的具体用法
TO_CHAR ( n [ fmt [ nlsparam]] )
该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR类型的值nlsparams指定由数值格式的元素返回的字符包括:
.小数点字符
.组分隔符
.本地钱币符号
.国际钱币符号
变元的形式为
NLS_NUMERIC_CHARACTERS=dg NLS_CURRENCY=tcxt NLS_ISO_CURRENCY=territory
其中d为小数点字符g为组分隔符
例 :TO_CHAR (LGNLS_NUMERIC_CHARACTERS= NLS_CURRENCY=NUD)=NUD
通过上面的了解再查看fmt的一些格式我们可以用以下表达式得到的值
/* > */
Select TO_CHAR() FROM DUAL
/* > ###### */
Select TO_CHAR() FROM DUAL
/* > */
Select TO_CHAR() FROM DUAL
是出来了可是前面又多了一个空格
对于 的值却是######以及的值变成了
我们重新确定一个新的需求
去空格
小数点最多位最少保留位
>>>>
>
最终实现如下
/*
FM 除空格
允许小数点左边最大正数为位小数点右边最少位最多位且在第位进行四捨五入
*/
Select TO_CHAR(FM) FROM DUAL
PLSQL小经验
一 Oracle的to_char()函数功能很强大但是在用它格式化数值型数据时应该请注意以下几项如果是小数如这样的数据经过to_char后再显示会变为如果你为了让它显示出原来的的话就得用To_char(要格式化的数值)保留三个小数并显示但这里就要注意了他为你截取小数的时候是四捨五入了所以如果是要求截掉小数而不四捨五入的话就应该自己写个函数截下去后再规格化以保证它不四捨五入
二 To_char(FM)这个函数规格化时的含义是有的地方如果有数字就显示如果没有数字就不显示有的地方在没有数字的时候也会有0来占位但这样做也有一个很大的缺点就是如果是整数时它也仍然会显示不要小瞧这个点一般来讲页面上要显示的话这个点就是多余的也给我们造成了不小的麻烦还要自己再写函数来把这个小点搞定
三 对于日期型的Oracle倒时提供了一个好的处理方法可以把日期做成数值型的然后再To_char就能显示出你所需要的类型了
四 在使用select into时一定要注意这种方法你一定要确认肯定会有数据被查出时才能使用如果查询结果为空时会导致报错还有一种情况是查出来的数据是多条也会报错所以应该尽量便宜游标来做会减少错误产生的机率
五 还有注意一点rownum不支持排序就是说你想用这个来控制行数的话就会发现他没有按你指定的排序方式显示这是一个很难办的事而且如果你用rownum=这样的语句来输出第二行的话也是行不通的 六 最恶心的一点是Oracle对null的判断变态到极点如果你说某个变量 aa=null它是判断不出来的尽管aa的确是空即使在选择条件里也是判断不出来的不知道为什么只好用nvl()这个函数来判断了在条件之外可以用 aa is null 来判断
六 补充一点就是在写存储过程时要注意参数名不能与数据库字段名相同否则Oracle会把这个参数名看成是字段名的即使你用表的别名区分也不行所以起参数名的时候一定要注意这点了