DB2的常用數據類型


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

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

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

 

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

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

改成:

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

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

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

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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'

當然,這都是采用內部格式壓縮過的。

四.空值

空值使用NULL表示,NULL可以表示任何數據類型的空值,但是NULL不能參加任何算數運算和邏輯運算,如果勉強運算得到的也是NULL
---------------------
作者:dlodj
來源:CSDN
原文:https://blog.csdn.net/DLODJ/article/details/7033619
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM