我想要一個數字取值在-7.2E-75到+ 7.2E + 75之間。我應該如何爲NUMBER指定精度和縮放比例。 (刻度範圍是1到38,精度是-84到127)。Oracle Precision
如果還有其他方法可以做到這一點,請提出建議。
我想要一個數字取值在-7.2E-75到+ 7.2E + 75之間。我應該如何爲NUMBER指定精度和縮放比例。 (刻度範圍是1到38,精度是-84到127)。Oracle Precision
如果還有其他方法可以做到這一點,請提出建議。
您建議的數字值在the limits of the Oracle NUMBER datatype之內。
您是否需要指定精度?定義列數只允許:
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NUMBER
COL2 NUMBER
COL3 NUMBER
COL4 NUMBER
SQL> insert into t1 (col1, col2) values (-7.2E-75, +7.2E+75);
1 row created.
SQL>
如果是這些困擾你的域範圍,你需要定義一個CHECK約束強制執行的規則。
「假設我要COL1採取123456766675544.344546567676,用數字作爲數據類型及其失敗」
失敗?怎麼樣?該值工作正常,我(和以前相同的表):
SQL> insert into t1 (col1) values (123456766675544.344546567676);
1 row created.
SQL>
所以,請提供更多的細節,如錯誤消息。
「當我啓動它只是和123456766675544上面的查詢,」這聽起來像是一個顯示問題
。正在插入正確的值。檢查了這一點:
SQL> set numwidth 50
SQL> select col1 from t1
/
2
COL1
--------------------------------------------------
7.20000000000000000000000000000000000000000000E+75
123456766675544.344546567676
SQL>
在這種情況下,設置NUMWIDTH其最大允許值(在SQL * Plus),讓我們來顯示一個值,但對方依然太大,所以我們必須用科學符號。
假設我想讓COL1取123456766675544.344546567676,NUMBER作爲數據類型失敗。 –
當我發出上述查詢時,它顯示的只是123456766675544,但我希望它在小數點後取值也應該是完整的123456766675544.344546567676。 –
對不起,我說失敗了,這不是失敗,我沒有得到想要的結果,通過設置數據類型爲NUMBER。 –
只是問,你不能使用它們作爲varchar?如果你想計算,你可以使用to_number – Moudiz
@Moudiz - 爲什麼地球上你會認爲將數字數據存儲爲字符串是一個好主意?如果沒有設計新的應用程序,必須在遺留系統中處理這些事情已經夠糟糕了。 – APC
不知道爲什麼這次近距離投票「太寬泛」。似乎是一個非常集中的問題(甚至在我編輯它之前)。 – APC