W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
數(shù)值格式化指定了存儲(chǔ)在數(shù)據(jù)庫(kù)中的定點(diǎn)數(shù)和浮點(diǎn)數(shù)的格式。
以下數(shù)值數(shù)據(jù)類型轉(zhuǎn)換函數(shù)使用了數(shù)值格式化:
NUMBER
?,?BINARY_FLOAT
? 或 ?BINARY_ DOUBLE
? 時(shí),且您需要它們的值轉(zhuǎn)換為 ?VARCHAR2
? 數(shù)據(jù)類型時(shí),需要用 ?TO_CHAR
? 函數(shù)的參數(shù)指定這些數(shù)值的格式。CHAR
? 或 ?VARCHAR2
? 時(shí),如果您需要將他們的值轉(zhuǎn)換為 ?NUMBER
? 數(shù)據(jù)類型時(shí),需要用 ?TO_NUMBER
? 函數(shù)的參數(shù)(暫不支持 ?NLS_NUMERIC_CHARACTERS
?)指定這些數(shù)值的格式。如果您需要將他們的值轉(zhuǎn)換為 ?BINARY_FLOAT
? 或 ?BINARY_DOUBLE
? 時(shí),需要用 ?TO_BINARY_FLOAT
? 和 ?TO_BINARY_DOUBLE
? 函數(shù)的參數(shù)指定數(shù)值格式。數(shù)值格式化會(huì)將數(shù)值四舍五入,并取有效數(shù)字位數(shù)。如果某個(gè)值的小數(shù)位數(shù),左邊的有效位數(shù)比格式中指定的位數(shù)高,則用 ?#
? 代替該值。如果 ?NUMBER
?的正值非常大且無法以指定的格式表示,則使用無窮大符號(hào)(?)替換該值。如果負(fù) ?NUMBER
? 值非常小且無法用指定的格式表示,則使用負(fù)無窮大符號(hào)(-?)替換該值。
與 Oracle 不同,OceanBase 數(shù)據(jù)庫(kù)數(shù)值格式化元素僅支持標(biāo)準(zhǔn)的數(shù)值格式。下表為 OceanBase 數(shù)據(jù)庫(kù)支持的數(shù)值格式化元素:
元素 |
示例 |
說明 |
---|---|---|
.(小數(shù)點(diǎn)) |
99.99 |
返回一個(gè)小數(shù),且小數(shù)點(diǎn)在指定位置。 限制條件:在數(shù)字格式化中,您只能指定一個(gè)小數(shù)點(diǎn)。 |
0 |
0999 9990 |
0999 返回前導(dǎo)零。9990 返回尾隨零。 |
9 |
9999 |
返回具有指定位數(shù)的值。如果為正,則返回帶有有前導(dǎo)空格的數(shù);如果為負(fù),則返回前導(dǎo)負(fù)數(shù)。前導(dǎo)零返回 0,除了零值,定點(diǎn)數(shù)的小數(shù)部分返回零。 |
如果省略格式參數(shù),會(huì)將數(shù)值轉(zhuǎn)為足夠長(zhǎng)的 ?VARCHAR2
? 以保留其所有的有效數(shù)字。
執(zhí)行以下語句:
SELECT TO_CHAR(0, '99.99') FROM DUAL;
查詢結(jié)果如下:
+--------------------+
| TO_CHAR(0,'99.99') |
+--------------------+
| .00 |
+--------------------+
下表顯示了對(duì)不同數(shù)值的 number 按照格式化元素 'fmt' 查詢得到的結(jié)果。
SELECT TO_CHAR(number, 'fmt') FROM DUAL;
number |
'fmt' |
Result |
---|---|---|
0 |
99.99 |
'.00' |
+0.1 |
99.99 |
'.10' |
-0.2 |
99.99 |
'-.20' |
0 |
90.99 |
'0.00' |
+0.1 |
90.99 |
'0.10' |
-0.2 |
90.99 |
'-0.20' |
0 |
9999 |
'0' |
1 |
9999 |
'1' |
+123.456 |
999.999 |
'123.456' |
-123.456 |
999.999 |
'-123.456' |
當(dāng)省略'fmt'參數(shù)的時(shí)候:
SELECT TO_CHAR(123.456) FROM DUAL;
顯示結(jié)果如下:
+------------------+
| TO_CHAR(123.456) |
+------------------+
| 123.456 |
+------------------+
當(dāng)? TO_CHAR
?結(jié)果超過 40 字節(jié),或者傳入?yún)?shù)為 binary_double/binary_float 類型時(shí),結(jié)果將被轉(zhuǎn)為科學(xué)計(jì)數(shù)法。
例如:
SELECT TO_CHAR(12355555555555555555555555555555555555555555555555) FROM DUAL;
顯示結(jié)果如下:
+-------------------------------------------------------------+
| TO_CHAR(12355555555555555555555555555555555555555555555555) |
+-------------------------------------------------------------+
| 1.2355555555555555555555555555555556E+49 |
+-------------------------------------------------------------+
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: