暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在格式编号中混合9和0

askTom 2016-10-19
638

问题描述

你好,
我对SQL引用有点困惑
让我们考虑当前“SQL参考”的“表2-14数字格式元素”中的元素0和9
让我们还考虑“表2-15数值转换结果”的示例

我有很多问题要问,因为我认为文件有点误导人

将0和9以相同的格式混合是什么意思?
I'm asking this as Element 0 of the Table 2-14 is only described as used for leading/trailing zeros (correct me if I'm wrong but I assume leading/trailing 0's are extra 0's one might want to add to a number)


例如,
- 90.99是否表示“返回3位数(即3个9 )并在需要时包括小数点前的0”
TO_CHAR(0,'90.99')格式返回“0.00”
-那么,对于999.009 , TO_CHAR ( 123.0,'999.009')返回'123.00',即5位(而不是4位,即格式中的4个9 ) ,后面是0 ,尽管是十进制格式的一部分是.009 ,它不是尾随0格式。


还有,你能给我解释一下第9要素的这句话吗
Leading zeros are blank, except for a zero value, which returns a zero for the integer part of the fixed-point number.

根据它, TO_CHAR(0,'9999')应该返回'',因为0不是定点数

唷,有点让人困惑

专家解答

带有前导空格的9个空白垫。零拍子。

所以90.99的意思是:

返回六个字符:

-领先的空间
-数字或空格
-数字或零(如果需要)
-时期
-两位数。如果未指定,则这些值为零。

因此,将此应用于0得到“0.00”,并带有两个空格!

如果转储输出,这将更容易看到:

SQL> select dump(TO_CHAR(0,'90.99')) from dual;

DUMP(TO_CHAR(0,'90.99'))
-----------------------------------------------

Typ=1 Len=6: 32,32,48,46,48,48


TO_CHAR(123.0,'999.009') returns ' 123.00'

不!它返回“123.000”:

SQL> select to_char(123.0,'999.009') from dual;

TO_CHAR(
--------
 123.000


文档中的示例包括FM修改器。这将停止空白填充。由于源没有第三个小数位,因此将对其进行修剪:

SQL> select to_char(123.0,'FM999.009') from dual;

TO_CHAR(
--------
123.00


如果将此掩码应用于123.006 ,则会获得所有六个数字:

SQL> select to_char(123.006,'FM999.009') from dual;

TO_CHAR(
--------
123.006


0 is not a fixed-point number

不,但这是integer part定点数的。所以,它说除去所有的前导零,除了单位(“1”)列中的1。这就是TO_CHAR ( 0,'9999')返回零的原因。

以下比较同一输入上的不同掩码可能会有所帮助:

SQL> with rws as (
  2    select 12.34 x from dual union all
  3    select 12 x from dual union all
  4    select .34 x from dual union all
  5    select 0 x from dual
  6  )
  7    select to_char(x, '99.99') "99.99",
  8           to_char(x, '90.99') "90.99",
  9           to_char(x, '00.00') "00.00",
 10           to_char(x, 'FM99.99') "FM99.99",
 11           to_char(x, 'FM00.00') "FM00.00"
 12    from rws;

99.99  90.99  00.00  FM99.9 FM00.0
------ ------ ------ ------ ------
 12.34  12.34  12.34 12.34  12.34
 12.00  12.00  12.00 12.    12.00
   .34   0.34  00.34 .34    00.34
   .00   0.00  00.00 0.     00.00

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论