OceanBase 數(shù)值類型

2021-06-30 13:55 更新

數(shù)值類型可以劃分為三類:

  • 整數(shù)類型:?BOOL/BOOLEAN?、?TINYINT?、?SMALLINT?、?MEDIUMINT?、?INT/INTEGER?、?BIGINT?。
  • 定點類型?:DECIMAL/NUMERIC?。
  • 浮點類型:?FLOAT?、?DOUBLE?。
  • Bit-Value 類型:?BIT?。

所有數(shù)據(jù)類型都可以同時使用?UNSIGNED?關(guān)鍵字聲明為無符號類型,這會導(dǎo)致值域發(fā)生變化。

數(shù)值類型在定義時可以指定 precision 和 scale,不同類型中 precision 和 scale 的含義可能有所不同,詳情請見各類型詳細(xì)說明。

整數(shù)類型

整數(shù)類型為定長、精確數(shù)值類型,值域取決于類型長度,以及是否為無符號,precision 只表示最小顯示寬度,詳見“ZEROFILL 屬性”。以下為相關(guān)信息:

類型

長度(字節(jié))

值域(有符號)

值域(無符號)

BOOL/BOOLEAN/

TINYINT

1

[-27, 27 - 1]

[0, 28 - 1]

SMALLINT

2

[-215, 215 - 1]

[0, 216 - 1]

MEDIUMINT

3

[-223, 223 - 1]

[0, 224 - 1]

INT/INTEGER

4

[-231, 231 - 1]

[0, 232 - 1]

BIGINT

8

[-263, 263 - 1]

[0, 264 - 1]

BOOL等價于BOOLEAN,這兩個類型又等價于TINYINT(1)。

INT等價于INTEGER。

定點類型

定點類型為變長、精確數(shù)值類型,值域和精度取決于 precision 和 scale,以及是否為無符號。precision 和 scale 分別表示十進制下的總最大有效位數(shù)、小數(shù)部分最大有效位數(shù),整數(shù)部分最大有效位數(shù)等于 precision - scale,其中 precision 和 scale 的最大值分別為 65、30,默認(rèn)值分別為 10、0。例如:

  • DECIMAL(5, 2),整數(shù)部分和小數(shù)部分最大有效位數(shù)分別為 3、2,所以值域為 [-999.99, 999.99]。

  • 如果同時定義為UNSIGNED,則值域為 [0, 999.99]。

DECIMAL等價于NUMERIC。

浮點類型

浮點類型為定長、非精確數(shù)值類型,值域和精度取決于類型長度、precision 和 scale,以及是否為無符號。precision 和 scale 分別表示十進制下的總最大有效位數(shù)、小數(shù)部分最大有效位數(shù),整數(shù)部分最大有效位數(shù)等于 precision - scale,其中 precision 和 scale 的最大值分別為 53、30。

浮點類型的精度只是 IEEE 標(biāo)準(zhǔn)中規(guī)定的理論值,實際情況可能因硬件或操作系統(tǒng)限制略有不同。

以下為不指定 precision 和 scale 時的默認(rèn)信息:

類型

長度(字節(jié))

值域(有符號)

值域(無符號)

精度

FLOAT

4

[-2128, 2128]

[0, 2128]

7 位

DOUBLE

8

[-21024, 21024]

[0, 21024]

15 位

如果指定 precision 和 scale,則值域確定方法與定點類型相同。

BIT-Value 類型

BIT 數(shù)據(jù)類型用于存儲 bit values。一個 BIT(M) 能夠存儲 M-bit 的值,M 的范圍是 1~64。

bit value 通過 b'value' 的形式指定,value 是用 0 和 1 來指定的,例如, b'111' 表示 7,b'10000000' 表示 128。

當(dāng)向 BIT(M) 列插入值時,如果插入值的長度小于 M,則會在左側(cè)填充 0。例如:將 b'101' 插入到 BIT(6) 時,相當(dāng)于插入了 b'000101'。

ZEROFILL 屬性

數(shù)值類型在定義時可以通過 ZEROFILL 關(guān)鍵字指定最小顯示寬度,同時將該類型隱式定義為 UNSIGNED。在數(shù)據(jù)實際顯示寬度不足最小顯示寬度時,通過先在小數(shù)部分補零到 scale 上限、再在整數(shù)部分補零到 precision 上限的方式,將顯示寬度補足到最小顯示寬度。例如:

  • INT(5) ZEROFILL:當(dāng)數(shù)據(jù)值為123時,將顯示為00123。

  • DECIMAL(10, 5) ZEROFILL:當(dāng)數(shù)據(jù)值為123.456時,將顯示為00123.45600。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號