我一直在試圖理解Oracle數據庫對數據類型=數字的使用。我跑過以下鏈接:oracle數據類型=數字,指數如何與精度和比例相關?
和我無法解釋它。我應該提到我沒有Oracle背景,但是從Matlab的經驗來看這個。我知道號碼數據類型具有精確性和規模。我不明白的是如何在這裏處理指數。指數是否與精度和尺度分開考慮?或者,指數是否受精度和比例限制?
這裏是我的困惑 - 上面的鏈接開頭:
問:我宣佈一個表的列數&它假定對 的數據類型是數字(38)是具體的。但我發現奇怪的是,它是 接受數字beyong 38 digits.ie。 1.111E + 125。如果數據類型的精度爲 爲38,並且縮放的範圍可以從-84到127這個值如何插入到列中。
答:我們說... 1.111e + 125只有4位數的精度(需要代表 數字的位數 - 在本例中爲1111)。
這似乎表明指數的處理與精度和尺度是分開的。但是有幾條消息要求別人提出:
問:當我創建一個表時: create table test(no number(7));將 插入測試值(1.00e + 25); 它給出了以下錯誤消息: ORA-01438:值大於指定的精度允許此列。 可以。解釋這一點。
答:你說的7位數字,你給它25
這似乎預示着指數由精度的限制。希望有人能幫助我理解這兩個答案如何是正確的。
謝謝Thilo,讓我看看...... NUMBER和NUMBER(38)實際上是兩種完全不同的動物。儘管它們都具有38位精度的十進制數字,但NUMBER包含的指數可以存儲更大和更小的值,而NUMBER(38)僅限於包含38位十進制數字的數字(不管放置小數點的位置)。是對的嗎? – ggkmath
NUMBER(38)將是+ 1E + 38到-1E + 38之間的整數。正好在小數點前面的38位數字。 – Thilo
好吧,我想我得到的是一旦你輸入NUMBER數據類型的精度,你基本上限制指數,使NUMBER(d)(其中d是一個整數)只能存儲+ 1E + 38到-1E + 38。沒有指定精度或比例的NUMBER可以存儲更大或更小的值。 – ggkmath