今天在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'
固然,這都是採用內部格式壓縮過的。
四.空值