[英]Oracle number data type issue
我正在嘗試在Oracle 11g數據庫中保存一些特定字符(假設為4)。 當我說數據時,我的數字有一個前導零,例如0100 0101等。 oracle為什么截斷前導零。 是否有可能避免這種情況。 我真的很想保存前導零。 請幫忙。
謝謝!
如果要顯示以零開頭的數字,請使用:
to_char(my_number,'fm0000')
如果您確實需要將數字存儲在前導零處,則將其存儲為varchar2,因為您所擁有的字符串是僅包含數字而不是數字的字符串。
上面的TO_CHAR
答案是最好的,但是它們需要進行調整,因為TO_CHAR(number, '0000')
將添加前導零和前導空格,如果存在負號,則為占位符:
SELECT '[' || TO_CHAR(123, '0000') || ']' "Format" FROM DUAL;
Format
-------
[ 0123] <-- note the leading space
要擺脫空間,請使用LTRIM或在格式字符串中使用FM限定符:
SELECT '[' || TO_CHAR(123, 'FM0000') || ']' "Format" FROM DUAL;
Format
-------
[0123] <-- no more leading space
如果要存儲前導零,則將數字存儲為固定長度值的char()
或可變長度值的varchar()
(或varchar2()
)。
數字以二進制格式存儲,沒有前導零的概念。
獲得8位數字的簡單技巧:
substr(your_number + power(10,8), 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.