今天在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'
固然,这都是采用内部格式压缩过的。
四.空值