DB2的經常使用數據類型

今天在db2中查詢數據時出現錯誤:sql

Overflow occurred during numeric data type conversion:SQLCODE=-413, SQLSTATE=22003, DRIVER=3.53.71.net

數字數據類型轉換過程當中出現溢出對象

 

select * from rpbbzd where  to_number(BBZD_BEGIN) < 2018012004
and to_number(BBZD_END) >=2018012004blog

此sql在db210.5中沒有問題,可是在8.2中會爆以上溢出錯誤。字符串

改爲:io

select * from rpbbzd where  cast(BBZD_BEGIN as INT) < 2018012004
and cast(BBZD_END as INT) >=2018012004ast

仍然會有錯誤,對比了一下數據發現超出int類型的範圍了,改用bigint:date

select * from rpbbzd where  cast(BBZD_BEGIN as BIGINT) < 2018012004
and cast(BBZD_END as BIGINT) >=2018012004select

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------數據類型

DB2的經常使用數據類型包括如下幾個:

一.數字型的。

1. SMALLINT          ---短整型,範圍爲-32768~+32767

2. INT/INTEGER    ---整型,4個字節,範圍爲-2147483648~+2147483647,一遍多用於作自動生成的序列,或者用做表記錄的id使用。

3. BIGINT               ----大整型,8個字節,精度爲19位,夠大了,通常較少使用。

4. DECIMAL(P,S)  ---小數型,其中P爲精度,S爲小數位數,隱含小數點(小數點不計入位數)。好比M DECIMAL(5,2),那麼就是指定M的精度爲5位(除小數點外全部數字的位數不能超過5),不然插入時會發生數據位溢出;而小數的位數不能超過2,不然插入時會截斷小數位。

好比:

M: 123.45(成功) 

M:12.345(成功,可是截斷爲12.34) 

M:1234.5(失敗,整數位超標,溢出報錯)

5. REAL                 ---單精度浮點型,不經常使用

6. DOUBLE          ----雙精度浮點型,不經常使用

 

二.字符型

char(n)                    ----定長字符串,長度範圍1~254,經常使用

varchar(n)              ----變長字符串,長度範圍1~32672,經常使用

CLOB                     -----字符大對象字符串,很大,沒用過,要用再研究。

 

三.時間型

date                        ----佔4個字節   插入格式爲 'YYYY-MM-DD'

time                        ----佔3個字節   插入格式爲 'HH:MM:SS'

timestamp            ----佔10個字節 插入格式爲 'YYYY-MM-DD HH:MM:SS'

固然,這都是採用內部格式壓縮過的。

四.空值

相關文章
相關標籤/搜索