number(p,s) s為負(fù)數(shù)為什么用不了
代碼部分:
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)不是同一個意思嗎
2018-11-23
第二個參數(shù)為負(fù)數(shù)時,以number(6,-2)為例,表示有效位6位,取整至小數(shù)點前2位,例子中如果輸入123456則結(jié)果為123500,注意有四舍五入。 你的例子中-8的絕對值大于6,于是6位有效位被全部截掉并取整為0,所以最終結(jié)果為0
2019-04-04
Oracle中數(shù)據(jù)類型number(m,n)中m表示的是所有有效數(shù)字的位數(shù),n表示的是小數(shù)位的位數(shù)。m的范圍是1-38,即最大38位。
??? 1> .NUMBER類型細(xì)講:
oracle?? number?? datatype?? 語法:NUMBER[(precision?? [, scale])]
簡稱:precision?? -->?? p?
????????? scale?? -->?? s
NUMBER(p,?? s)
范圍:?? 1?? <=?? p?? <= 38,?
?????? -84?? <=?? s?? <= 127
??????? 保存數(shù)據(jù)范圍: -1.0e-130?? <= number value? <?? 1.0e+126????????
保存在機(jī)器內(nèi)部的范圍:?? 1?? ~?? 22?? bytes
有效位:從左邊第一個不為0的數(shù)算起的位數(shù)。
s的情況:
s?? >?? 0
????? 精確到小數(shù)點右邊s位,并四舍五入。然后檢驗有效位是否?? <=?? p。
s?? <?? 0
????? 精確到小數(shù)點左邊s位,并四舍五入。然后檢驗有效位是否?? <=?? p?? +?? |s|。
s?? =?? 0
????? 此時NUMBER表示整數(shù)。
2018-11-25
謝謝回答,剛剛試了下,的確如此,但是老師在《3-2 oracle管理表之?dāng)?shù)據(jù)類型》里講的是:number(p,s)中如果s為負(fù)數(shù)的時候,那么它就表示從最大有效數(shù)字到小數(shù)點的位數(shù),不知道是不是我理解錯了