[英]TO_CHAR function logic <<Number format>>
我是oracle新手,發現有些難以理解的東西。 即使我了解TO_CHAR的功能,我還是數字格式模型概念的新手。 請幫助我理解以下邏輯。
select TRIM(substr(TO_CHAR (160, '000'),1,3)) from dual;
Output -> 16
select TRIM(substr(TO_CHAR (160),1,3)) from dual;
Output -> 160
對於第一個查詢,oracle為什么返回值16而不是160?
以FM
開始格式字符串,例如'FM000'
。
如果沒有FM
,則會在前面保留一個減號的空間。
select '|' || to_char(160,'000') || '|' as no_FM
,'|' || to_char(160,'FM000') || '|' as with_FM
from dual
+--------+---------+
| NO_FM | WITH_FM |
+--------+---------+
| | 160| | |160| |
+--------+---------+
有趣。 試過這個:
select to_char(160, '000')
,substr(to_char(160, '000'), 1, 3)
,substr('160', 1, 3)
,length(to_char(160, '000'))
from dual;
這給了我160,16,160,4
子字符串為您提供字符串的前3個字符。 to_char(160,'000')的第一個字符是空格。 保留一個負號的位置。 因此substr(to_char(160,'000'),1,3)的值不是16而是space16。
select substr(TRIM(TO_CHAR (160, '000')),1,3) from dual;
輸出-> 160
代替這個:
select TRIM(substr(TO_CHAR (160, '000'),1,3)) from dual;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.