oracle與gbase8s遷移數(shù)據(jù)類型對照以及舉例說明
聲明:以下為筆者閱讀gbase官方文檔和oracle官方文檔的理解,如有錯誤,敬請指正。
最終結(jié)論:oracle與gbase8s數(shù)據(jù)類型對應(yīng)關(guān)系
邊界范圍使用數(shù)據(jù)類型 | oracle | gbase |
---|---|---|
最大精度126位 | FLOAT/NUMBER | DECIMAL |
單精度浮點數(shù)數(shù)據(jù)類型 | BINARY_FLOAT | smallfloat |
雙精度浮點數(shù)數(shù)據(jù)類型 | BINARY_DOUBLE | FLOAT |
下面首先回憶一下精度、定點、浮點的定義,然后再來看oracle、gbase的官方文檔。
關(guān)于單精度與雙精度的區(qū)別
單精度和雙精度是計算機中用于表示浮點數(shù)的兩種不同精度的格式。
- 單精度(Single Precision):單精度浮點數(shù)使用32位(4個字節(jié))來存儲一個浮點數(shù)。它包括一個符號位(用于表示正負(fù))、8位指數(shù)和23位尾數(shù)。單精度提供大約7位有效數(shù)字的精度。
- 雙精度(Double Precision):雙精度浮點數(shù)使用64位(8個字節(jié))來存儲一個浮點數(shù)。它包括一個符號位、11位指數(shù)和52位尾數(shù)。雙精度提供大約15-16位有效數(shù)字的精度,比單精度更高。
主要區(qū)別:
- 精度: 雙精度提供比單精度更高的精度,因為它使用更多的位來表示數(shù)字。這使得雙精度能夠處理更大范圍的數(shù)值,并提供更高的精確度。
- 存儲需求: 雙精度使用的存儲空間是單精度的兩倍,因此在存儲大量數(shù)據(jù)時,雙精度需要更多的內(nèi)存空間。
- 計算速度: 在某些情況下,單精度計算可能比雙精度計算速度更快,因為它涉及更少的位數(shù)和更簡單的計算。
選擇使用單精度還是雙精度通常取決于對精度和內(nèi)存使用的要求。如果需要更高的精度或者處理非常大或非常小的數(shù)值范圍,雙精度可能更適合。而如果對精度要求不高,但需要節(jié)省內(nèi)存,那么單精度可能更合適。
關(guān)于定點與浮點定義的區(qū)別
定點數(shù)和浮點數(shù)是計算機表示數(shù)據(jù)的兩種不同方式。定點數(shù)的小數(shù)點位置在計算機的存儲中是約定好的,這意味著小數(shù)位為固定十進制數(shù),而浮點數(shù)的小數(shù)位則隨2的幾次冪的大小而浮動。例如,8位定點數(shù)可以表示的范圍是-16.00~15.875,其最大精度為0.125。
將浮點數(shù)轉(zhuǎn)換為定點數(shù)的操作包括:首先計算 b = a * 2^F(a為浮點數(shù),F(xiàn)為小數(shù)部分字長),然后將b化為整數(shù),最后用二進制將b表示成c。這種轉(zhuǎn)換方法在可以接受精度損失的前提下,有可能提高運算效率。然而,一般而言,定點數(shù)的數(shù)值范圍有限,要求的處理硬件比較簡單。
精度的定義
精度是一個衡量測量結(jié)果與真實值接近程度的概念,它反映的是誤差的大小。如果誤差小,則精度高;反之,如果誤差大,則精度低。在計算機科學(xué)中,精度也用于表示數(shù)值的最小度量單位,例如,GPS的精度為0.1m,表示這個GPS最小能識別0.1m的位置差異。同時,精度還被用來描述計算機中小數(shù)點前后的總位數(shù),如單精度和雙精度分別表示精確到小數(shù)點后幾位。然而,需要注意的是,儀器的精度并不能完全反映其準(zhǔn)確度。
Oracle 分為NUMBER和浮點數(shù)
NUMBER
NUMBER
數(shù)據(jù)類型用于存儲可能為負(fù)值或正值的數(shù)值。
數(shù)據(jù)類型存儲定點數(shù)和浮點數(shù)。精度 38 位有效數(shù)字。
NUMBER(p, s):
- 用于存儲數(shù)字值,其中p表示精度(最多38位),s表示小數(shù)位數(shù)取值范圍為[-84~127],當(dāng)s取負(fù)數(shù)時,將小數(shù)點左邊的s位置為0,并四舍五入。
- 當(dāng)小數(shù)位數(shù)大于s時,采用四舍五入的方式。當(dāng)整數(shù)部分的長度大于p-s時,報錯。
- 需要22個字節(jié)的存儲空間。
Oracle FLOAT
數(shù)據(jù)類型是NUMBER
數(shù)據(jù)類型的子類型。FLOAT(b):用于存儲浮點數(shù),范圍從-1.79E+308到1.79E+308。FLOAT
的最大精度是126
。二進制精度的最大126
位數(shù),大致等于十進制數(shù)位數(shù)的38
位數(shù)。
浮點數(shù)
BINARY_FLOAT 數(shù)據(jù)類型
BINARY_FLOAT是 32 位單精度浮點數(shù)數(shù)據(jù)類型。每個值需要 5 個字節(jié),包括一個長度字節(jié)。BINARY_FLOAT
BINARY_DOUBLE 數(shù)據(jù)類型
BINARY_DOUBLE是 64 位雙精度浮點數(shù)數(shù)據(jù)類型。每個值需要 9 個字節(jié),包括一個長度字節(jié)。BINARY_DOUBLE
create table t2 (a binary_float,b binary_double); insert into t2 values (3.141592653589,3.141592653589); insert into t2 values (1023.141592653589,1023.141592653589); insert into t2 values (1023.14159265358933333333,1023.14159265358933333333);
gbase 8s 分精確數(shù)值數(shù)據(jù)類型,近似數(shù)值數(shù)據(jù)類型
精確數(shù)值數(shù)據(jù)類型
gbase應(yīng)該是32位最長,oracle是38位
近似數(shù)值數(shù)據(jù)類型
- smallfloat:8位有效數(shù)字的單精度浮點數(shù)值
- float/double:16位有效數(shù)字的雙精度浮點數(shù)值。
建表時,在數(shù)據(jù)類型聲明中接受precision參數(shù),但是該參數(shù)對數(shù)據(jù)庫服務(wù)器存儲的值的實際精度不起作用。
create table t1 (a float,b smallfloat); desc t1; insert into t1 values (3.14,3.14); insert into t1 values (3.1415926,3.1415926); insert into t1 values (3.141592653589,3.141592653589); insert into t1 values (1023.141592653589,1023.141592653589); insert into t1 values (1023.14159265358933333333,1023.14159265358933333333); select * from t1;
可以看出 smallfloat超過8位有效數(shù)字會截斷
可以看出指定該參數(shù)對數(shù)據(jù)庫服務(wù)器存儲的值的實際精度不起作用。
查看計算后小數(shù)位數(shù)是decimal類型
總結(jié)
到此這篇關(guān)于oracle與gbase8s遷移數(shù)據(jù)類型對照以及舉例說明的文章就介紹到這了,更多相關(guān)oracle與gbase8s遷移數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Oracle數(shù)據(jù)遷移MySQL的三種簡單方法
- 如何把Oracle?數(shù)據(jù)庫從?RAC?集群遷移到單機環(huán)境
- Oracle通過LogMiner實現(xiàn)數(shù)據(jù)同步遷移
- Oracle 10g DG 數(shù)據(jù)文件遷移的實現(xiàn)
- 如何將Oracle的一個大數(shù)據(jù)表快速遷移到 Sqlserver2008數(shù)據(jù)庫(圖文教程)
- oracle數(shù)據(jù)遷移到db2數(shù)據(jù)庫的實現(xiàn)方法(分享)
- oracle數(shù)據(jù)庫遷移到MySQL的方法總結(jié)
- 直接拷貝數(shù)據(jù)文件實現(xiàn)Oracle數(shù)據(jù)遷移
- Oracle數(shù)據(jù)庫遷移方案
- Oracle數(shù)據(jù)庫遷移所有文件到新掛載磁盤路徑
相關(guān)文章
使用sqlplus命令行工具為oracle創(chuàng)建用戶和表空間
這篇文章主要介紹了使用sqlplus為oracle創(chuàng)建用戶和表空間的方法,本文介紹的是使用Oracle 9i所帶的命令行工具:SQLPLUS,需要的朋友可以參考下2017-11-11Oracle內(nèi)存分配不足的過程解析(業(yè)務(wù)干掛數(shù)據(jù)庫)
本文介紹了Oracle數(shù)據(jù)庫內(nèi)存分配不足的問題,原因主要是業(yè)務(wù)劇增導(dǎo)致的內(nèi)存不足,通過分析AAS負(fù)載、等待事件、transactions和阻塞情況,發(fā)現(xiàn)PGA內(nèi)存出現(xiàn)了嚴(yán)重抖動,感興趣的朋友一起看看吧2025-02-02oracle 監(jiān)聽 lsnrctl 命令 (推薦)
這篇文章主要介紹了oracle 監(jiān)聽 lsnrctl 命令 ,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03