oracle中number型欄位長度、精度及實際儲存狀態測試(zt)
工作中經常要遇到這種欄位的處理情況,當然以前也見過大蝦總結過。但是看了之後,又還給人家。是人家的終究還是人家的,需要自己親自測試並總結才能變成自己的。
http://blog.chinaunix.net/u/22472/showart.php?id=258754
相關知識回顧:
有效數位:從左邊第一個不為0的數算起,小數點和負號不計入有效位數。
number(p,s)
p:1~38
s:-84~127
p:1~38
s:-84~127
p>0,對s分2種情況:
1. s>0
精確到小數點右邊s位,並四捨五入。然後檢驗有效數位是否<=p;如果s>p,小數點右邊至少有s-p個0填充。
精確到小數點右邊s位,並四捨五入。然後檢驗有效數位是否<=p;如果s>p,小數點右邊至少有s-p個0填充。
2. s<0
精確到小數點左邊s位,並四捨五入。然後檢驗有效數位是否<=p+|s|
精確到小數點左邊s位,並四捨五入。然後檢驗有效數位是否<=p+|s|
案例測試:
hongsy;
名稱 是否為空? 型別
----------------------------------------------------- -------- ------------
NUM1 NUMBER
NUM2 NUMBER(2)
NUM3 NUMBER(5,3)
NUM4 NUMBER(5,-2)
名稱 是否為空? 型別
----------------------------------------------------- -------- ------------
NUM1 NUMBER
NUM2 NUMBER(2)
NUM3 NUMBER(5,3)
NUM4 NUMBER(5,-2)
into hongsy(num1) values(1111111111);
已建立 1 行。
;
提交完成。
into hongsy(num2) values(11);
已建立 1 行。
into hongsy(num2) values(111);
insert into hongsy(num2) values(111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
insert into hongsy(num2) values(111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
into hongsy(num2) values(-11);
已建立 1 行。
into hongsy(num2) values(-111);
insert into hongsy(num2) values(-111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
insert into hongsy(num2) values(-111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
into hongsy(num2) values(-11.1);
已建立 1 行。
into hongsy(num2) values(-11.1111);
已建立 1 行。
;
提交完成。
num2 from hongsy;
NUM2
----------
----------
11
-11
-11
-11
已選擇8行。
into hongsy(num3) values(111);
insert into hongsy(num3) values(111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
insert into hongsy(num3) values(111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
into hongsy(num3) values(11);
已建立 1 行。
into hongsy(num3) values(-11);
已建立 1 行。
into hongsy(num3) values(-111);
insert into hongsy(num3) values(-111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
insert into hongsy(num3) values(-111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
into hongsy(num3) values(11.111);
已建立 1 行。
into hongsy(num3) values(11.1111);
已建立 1 行。
;
提交完成。
num3 from hongsy;
NUM3
----------
----------
11
-11
11.111
11.111
已選擇12行。
into hongsy(num4) values(1111);
已建立 1 行。
into hongsy(num4) values(111111);
已建立 1 行。
into hongsy(num4) values(11111111);
insert into hongsy(num4) values(11111111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
insert into hongsy(num4) values(11111111)
*
ERROR 位於第 1 行:
ORA-01438: 值大於此列指定的允許精確度
;
提交完成。
num4 from hongsy;
NUM4
----------
----------
1100
111100
已選擇14行。
into hongsy(num4) values(1111111);
已建立 1 行。
;
提交完成。
num4 from hongsy;
NUM4
----------
----------
1100
111100
1111100
已選擇15行。
table hongsy1 (num1 number(39));
create table hongsy1 (num1 number(39))
*
ERROR 位於第 1 行:
ORA-01727: 數字精度說明符超出範圍(1 到 38)
create table hongsy1 (num1 number(39))
*
ERROR 位於第 1 行:
ORA-01727: 數字精度說明符超出範圍(1 到 38)
table hongsy1 (num1 number(38,128));
create table hongsy1 (num1 number(38,128))
*
ERROR 位於第 1 行:
ORA-01728: 數字標度說明符超出範圍(-84 到 127)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84718/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 修改欄位型別和長度Oracle型別
- oracle 修改表欄位的長度Oracle
- [20190930]oracle number型別儲存轉化指令碼.txtOracle型別指令碼
- [20191003]oracle number型別儲存轉化指令碼.txtOracle型別指令碼
- [20191013]oracle number型別儲存轉化指令碼.txtOracle型別指令碼
- How Oracle Store Number internal(zt)Oracle
- 主表子表動態欄位儲存實現方式總結
- SAP WM中階儲存型別裡的Full stk rmvl 欄位和Return Storage type欄位型別
- 如何在Spring Data MongoDB 中儲存和查詢動態欄位SpringMongoDB
- mysql中varchar型別最大長度測試MySql型別
- iNeuOS工業網際網路作業系統,釋出實時儲存方式:實時儲存、變化儲存、定時儲存,增加裝置振動狀態和電能狀態監測驅動,v3.6.2作業系統
- ORANCLE 資料已存在,修改欄位型別長度型別
- JS大坑之19位數的Number型精度丟失問題JS
- mysql變長型別欄位varchar值更新變長或變短底層檔案儲存原理MySql型別
- 【NUMBER】Oracle資料庫最佳化之理解NUMBER儲存機制Oracle資料庫
- [BUG反饋]模型中的欄位型別為日期是隻儲存了年份模型型別
- mssql sqlserver 可以儲存二進位制資料的欄位型別詳解SQLServer型別
- [20180613]縮短欄位長度.txt
- canvas 儲存與還原狀態Canvas
- 富文字儲存型XSS的模糊測試之道
- Oracle ORION模擬Database負載測試儲存效能OracleDatabase負載
- Azure Terraform(四)狀態檔案儲存ORM
- ORACLE NUMBER資料型別Oracle資料型別
- 10_深入解析Oracle number資料型別及os層number解析工具分享Oracle資料型別
- Spark儲存Parquet資料到Hive,對map、array、struct欄位型別的處理SparkHiveStruct型別
- MySQL的欄位數量以及長度限制MySql
- [20210423]建立檢視以及欄位長度.txt
- React 4 種狀態型別及 N 種狀態管理React型別
- Block型別及儲存區域BloC型別
- Oracle 中,根據狀態欄位進行自定義排序例(待驗證、待維修、重新維修)Oracle排序
- OpenHarmony頁面級UI狀態儲存:LocalStorageUI
- iOS UI狀態儲存和恢復(三)iOSUI
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- 美創科技運維日記|Oracle欄位長度引起的思考length()和lengthb()運維Oracle
- 使用NAS動態儲存卷建立有狀態應用
- Oracle的number資料型別Oracle資料型別
- MySQL federated儲存引擎測試MySql儲存引擎
- Android Activity 重建之狀態儲存與恢復Android
- 分散式儲存Ceph之PG狀態詳解分散式