oralce中to_char默认转换格式的理解

select concat('4', to_char(02, '09')) from dual;结果为4 02

因为9是占位如果左边起是o会自动隐藏,0是强制显示如果左右是0一样显示,非0也显示,因为数值分正负,正好‘+’会自动隐藏,负号‘-’则不会隐藏,这就是上面为什么有个空格的原因。

select concat('4', to_char(02, 'FM09')) from dual;结果为402

可以看出FM的作用就是清空前面的空格。

由此可以推算出to_char转换数值的默认格式是,先判断数值的有效长度(指的是左边不为0开始),然后格式填充相应的9,正号隐藏,负号保存。最后FM将空格清空。

对上面隐藏的理解:隐藏就是看不到,用空格代表,当格式位数大于数值的位数,格式为‘9’的就用空格表示,格式为‘0’的就用0表示。

 

 

 

简单理解:格式的位数不能小于数值的位数(这里的位数是只左边不为0开始的位数),否则结果为###,就是错的。

              格式的位数与数值位数(上同)相等的时候,是什么就显示什么。

              格式的位数大于数值的位数(上同)的时候,超过的部分格式为0的时候,强制填充0,格式为9的时候我们就用空格填充。

posted @ 2013-10-15 11:14  离子  阅读(741)  评论(0编辑  收藏  举报