clickHouse 基本資料型別

2021-10-11 12:45:29 字數 2746 閱讀 4549

整型:固定長度的整型,包括有符號整型或無符號整型。

整型範圍(-2n-1~2n-1-1):

int8 - [-128 : 127]

int16 - [-32768 : 32767]

int32 - [-2147483648 : 2147483647]

int64 - [-9223372036854775808 : 9223372036854775807]

無符號整型範圍(0~2n-1):

uint8 - [0 : 255]

uint16 - [0 : 65535]

uint32 - [0 : 4294967295]

uint64 - [0 : 18446744073709551615]

浮點型

float32 - float

float64 – double

建議盡可能以整數形式儲存資料。例如,將固定精度的數字轉換為整數值,如時間用毫秒為單位表示, 因為浮點型進行計算時可能引起四捨五入的誤差。

與標準sql相比,clickhouse 支援以下類別的浮點數:

inf-正無窮:

? select 1/0

┌─divide(1, 0)─┐

│ inf │

└──────────────┘

-inf-負無窮:

? select -1/0

┌─divide(1, 0)─┐

│ -inf │

└──────────────┘

nan-非數字:

? select 0/0

┌─divide(0, 0)─┐

│ nan │

└──────────────┘

布林型: 沒有單獨的型別來儲存布林值。可以使用 uint8 型別,取值限制為 0 或 1。

字串

1)string

字串可以任意長度的。它可以包含任意的位元組集,包含空位元組。

2)fixedstring(n)

固定長度 n 的字串,n 必須是嚴格的正自然數。當服務端讀取長度小於 n 的字串時候,通過在字串末尾新增空位元組來達到 n 位元組長度。 當服務端讀取長度大於 n 的字串時候,將返回錯誤訊息。

與string相比,極少會使用fixedstring,因為使用起來不是很方便。

列舉型別

包括 enum8 和 enum16 型別。enum 儲存 『string』= integer 的對應關係。

enum8 用 『string』= int8 對描述。

enum16 用 『string』= int16 對描述。

用法演示:

建立乙個帶有乙個列舉 enum8(『hello』 = 1, 『world』 = 2) 型別的列:

create table t_enum

(x enum8(『hello』 = 1, 『world』 = 2)

)engine = tinylog

這個 x 列只能儲存型別定義中列出的值:『hello』或』world』。如果嘗試儲存任何其他值,clickhouse 丟擲異常。

? insert into t_enum values (『hello』), (『world』), (『hello』

**從表中查詢資料時,clickhouse 從 enum 中輸出字串值。**

select * from t_enum

┌─x─────┐

│ hello │

│ world │

│ hello │

└───────┘

**如果需要看到對應行的數值,則必須將 enum 值轉換為整數型別。**

select cast(x, 'int8') from t_enum

┌─cast(x, 'int8')─┐

│ 1 │

│ 2 │

│ 1 │

└─────────────────┘

陣列

array(t):由 t 型別元素組成的陣列。t 可以是任意型別,包含陣列型別。 但不推薦使用多維陣列,clickhouse 對多維陣列的支援有限。例如,不能在 mergetree 表中儲存多維陣列。

建立陣列:

(1)array(t) : array(『a』,『b』)

(2)也可以使用方括號 : [『a』,『b』]

元組

tuple(t1, t2, …):元組,其中每個元素都有單獨的型別。

建立元組的示例:

? select tuple(1,『a』) as x, totypename(x)

select

(1, 'a') as x,

totypename(x)

┌─x───────┬─totypename(tuple(1, 'a'))─┐

│ (1,'a') │ tuple(uint8, string) │

└─────────┴───────────────────────────┘

1 rows in set. elapsed: 0.021 sec.

date:日期型別,用兩個位元組儲存,表示從 1970-01-01 (無符號) 到當前的日期值。

基本資料類

integer integer1 1 int integer2 integer1 將基本資料型別換成string字串型別 講字串轉換成基本資料型別 int num integer.parseint 1 判斷記憶體位址是否相同,用 判斷物件的資料是否相同,用 equals 比較是否相等,可用向下轉型方...

python基本數 python基本資料型別

1.數字 int 數字又分整型和浮點型,在python中宣告變數是不用宣告所以自己就會識別 a 10 整型 a1 1.24 浮點型 支援科學計數法,將10用e來代替 2.字串 str 在python中用引號引起來的就是字串,而且單引號和雙引號並沒有什麼區別 a string a1 string a2...

PHP有哪些基本資料類,php基本資料型別有哪些

php中的資料型別有字串 整數 浮點數 邏輯 陣列 物件 null。下面分別解釋一下每種型別。php字串 字串是字串行,比如 hello world 字串可以是引號內的任何文字。您可以使用單引號或雙引號 例項 x hello world echo x echo x hello world echo ...