亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

number(p,s) s為負數為什么用不了

代碼部分:

SQL> desc test1123

Name? ?Type? ? ? ? ? Nullable Default Comments?

------ ------------- -------- ------- --------?

ID? ? ?INTEGER? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ? ?

NAME? ?NCHAR(8)? ? ? Y? ? ? ? ? ? ? ? ? ? ? ? ?

SALARY NUMBER(6,-8)? Y? ? ? ? ? ? ? ? ? ? ? ? ?

JOB? ? NVARCHAR2(10) Y? ? ? ? ? ? ? ? ?

SQL> insert into test1123 (name,job,salary,id) values ('hello','水電費水電費薩頂頂',23.2,2);

1 row inserted

SQL> select * from test1123;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ID NAME? ? ? ? ? ? ? ? SALARY JOB

--------------------------------------- ----------------- -------- ---------------------

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 hello? ? ? ? ? ? ? ? ? ? 0 水電費水電費薩頂頂

改為 number(6,2)就能寫入了,但這個和number(6,-8)不是同一個意思嗎

正在回答

3 回答

第二個參數為負數時,以number(6,-2)為例,表示有效位6位,取整至小數點前2位,例子中如果輸入123456則結果為123500,注意有四舍五入。 你的例子中-8的絕對值大于6,于是6位有效位被全部截掉并取整為0,所以最終結果為0

1 回復 有任何疑惑可以回復我~

Oracle中數據類型number(m,n)中m表示的是所有有效數字的位數,n表示的是小數位的位數。m的范圍是1-38,即最大38位。

??? 1> .NUMBER類型細講:
oracle?? number?? datatype?? 語法:NUMBER[(precision?? [, scale])]
簡稱:precision?? -->?? p?
????????? scale?? -->?? s

NUMBER(p,?? s)
范圍:?? 1?? <=?? p?? <= 38,?

?????? -84?? <=?? s?? <= 127
??????? 保存數據范圍: -1.0e-130?? <= number value? <?? 1.0e+126????????
保存在機器內部的范圍:?? 1?? ~?? 22?? bytes

有效位:從左邊第一個不為0的數算起的位數。
s的情況:
s?? >?? 0
????? 精確到小數點右邊s位,并四舍五入。然后檢驗有效位是否?? <=?? p。
s?? <?? 0
????? 精確到小數點左邊s位,并四舍五入。然后檢驗有效位是否?? <=?? p?? +?? |s|。
s?? =?? 0
????? 此時NUMBER表示整數。


0 回復 有任何疑惑可以回復我~

謝謝回答,剛剛試了下,的確如此,但是老師在《3-2 oracle管理表之數據類型》里講的是:number(p,s)中如果s為負數的時候,那么它就表示從最大有效數字到小數點的位數,不知道是不是我理解錯了

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

number(p,s) s為負數為什么用不了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號