问题描述
你好,
我对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不是定点数
唷,有点让人困惑
我对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”,并带有两个空格!
如果转储输出,这将更容易看到:
TO_CHAR(123.0,'999.009') returns ' 123.00'
不!它返回“123.000”:
文档中的示例包括FM修改器。这将停止空白填充。由于源没有第三个小数位,因此将对其进行修剪:
如果将此掩码应用于123.006 ,则会获得所有六个数字:
0 is not a fixed-point number
不,但这是integer part定点数的。所以,它说除去所有的前导零,除了单位(“1”)列中的1。这就是TO_CHAR ( 0,'9999')返回零的原因。
以下比较同一输入上的不同掩码可能会有所帮助:
所以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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




