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型別
- MySQL 如何儲存長度很長的資料欄位MySql
- oracle中dump函式及oracle NUMBER型別內部儲存機制Oracle函式型別
- oracle 修改表欄位的長度Oracle
- MySQL中欄位型別與合理的選擇欄位型別;int(11)最大長度是多少?varchar最大長度是多少?MySql型別
- mysql中varchar型別最大長度測試MySql型別
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- 主表子表動態欄位儲存實現方式總結
- SAP WM中階儲存型別裡的Full stk rmvl 欄位和Return Storage type欄位型別
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- varchar or blob:欄位型別的儲存和溢位條件型別
- oracle資料值型資料改精度測試Oracle
- 如何在Spring Data MongoDB 中儲存和查詢動態欄位SpringMongoDB
- ORACLE 加密(TDE) 對欄位加密測試Oracle加密
- 【NUMBER】有關Oracle NUMBER型別定義中precision和scale的測試和總結Oracle型別
- mysql的text欄位長度MySql
- Oracle基本資料型別儲存格式淺析[zt]Oracle資料型別
- iNeuOS工業網際網路作業系統,釋出實時儲存方式:實時儲存、變化儲存、定時儲存,增加裝置振動狀態和電能狀態監測驅動,v3.6.2作業系統
- varchar型別的欄位儲存純數字的排序型別排序
- mysql變長型別欄位varchar值更新變長或變短底層檔案儲存原理MySql型別
- 測試NUMBER型別的效能型別
- JS大坑之19位數的Number型精度丟失問題JS
- Oracle LOB儲存知識(zt)Oracle
- MySQL中需要注意的欄位長度問題MySql
- [BUG反饋]模型中的欄位型別為日期是隻儲存了年份模型型別
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- Oracle系統檢視中address欄位長度與db位數的關係Oracle
- Oracle儲存單位Oracle
- oracle的欄位型別Oracle型別
- oracle中的數值資料儲存格式分析(ZT)Oracle
- 【原創】Oracle number date varchar2欄位型別佔用空間大小Oracle型別
- 更新大表中某個欄位的儲存過程儲存過程
- mssql sqlserver 可以儲存二進位制資料的欄位型別詳解SQLServer型別
- Oracle 儲存型別Oracle型別
- 不確定的資料結構試驗clob欄位儲存資料結構
- oracle儲存過程編譯死掉的原因及解決(zt)Oracle儲存過程編譯
- jQuery 操作checkbox翻頁儲存選中狀態jQuery
- oracle中lob欄位Oracle