DB2数据类型(抄袭)

数字

数据类型        精度          最小值                                        最大值                      
smallint         5              -32,768                                       32,767                      
integer          10            -2,147,483,648                            2,147,483,647                      
bigint            19            -9,223,372,036,854,775,808        9,223,372,036,854,775,807                      
decimal        31         
real               24            -3.402E+38                                  3.402E+38                      
double         53            -1.79769E+308                            +1.79769E+308

字符

数据类型            最大长度    
char                  254字节    
varchar            32672字节    
long varchar   32700字节    
clob                  2,147,483,647字节    
graphic            127字节    
vargraphic      16,336字节    
dbclob            1,073,741,823字节    
blob                 2,147,483,647字节

日期类型

描述                        限制            
最小date值            0001-01-01            
最大date值            9999-12-31            
最小time值            00:00:00            
最大time值            24:00:00            
最小timestamp值            0001-01-01-00.00.00.000000            
最大timestamp值            9999-12-31-24.00.00.000000

DB2提供有3种大对象:
    Binary Large Objects(BLOBs)
    Single-Byte Character Large Objects(CLOBs)
    Double-Byte Character Large Objects(DBCLOBs)
    lobs可以直接作为数据库对象在过程中使用
create procedure staffresume ( in p_empno char(6),out p_resume clob(1M) )
language sql
specific staffresume
begin
    select reume into p_resume
      from emp_resume
      where empno=p_empno and resume_format = ‘ascii’;
end

如何选择正确的数据类型:
问题            数据类型
字符数据是变长的?            varchar
字符数据是变长的,最大值是多少?            varchar
数据是否需要排序?            char,varchar, numeric
数据是否用于算术计算?            decimal,numeric,real,double,bigint,integer,smallint
数值包含小数吗?            decimal,numeric,real,double
数据是定长的?            char
数据是否有特殊的含义            用户自定义类型

数据很大,或者你需要存储非传统数据?            clob,blob,dbclob

tip:基于表的基本类型定义变量,数据类型装换会影响数据库的性能

1.创建
    create distinct type <distinct-type-name> as  <source-data-type> with comparisons
    其中with comparisons表示可以使用系统提供的比较符号;例如:
    create distinct type miles as double with comparisons;
注意:在自定义类型创建结束之后,DB2会自动创建两个类型转换函数
    miles   (double)
    double (miles)
    create distinct type kilometers as double with comparisons;    
2.定义变量
   declare v_in_mile     miles;
   declare v_in_kilometers    kilometers;
3.使用方法
      1)错误的使用方法,没有使用转换函数
             if (v_in_mile > v_in_kilometers)
             if (v_in_mile > 30.0)
      2)正确的使用方法
             if (v_in_mile > miles(double(v_in_kilometer)/1.6))

             if (v_in_mile >miles(30.0))

日期、时间和字符串的操作:
日期和时间的操作
1)取时间相关的值
select current date                 from sysibm.sysdummy1;
select current time                from sysibm.sysdummy1;
select current timestamp             from sysibm.sysdummy1;
select year(current timestamp)         from sysibm.sysdummy1;
select month(current timestamp)         from sysibm.sysdummy1;
select day(current timestamp)         from sysibm.sysdummy1;
select hour(current timestamp)         from sysibm.sysdummy1;
select minute(current timestamp)         from sysibm.sysdummy1;
select second(current timestamp)         from sysibm.sysdummy1;
select microsecond(current timestamp)     from sysibm.sysdummy1;
2)计算
select current date + 1 year                  from sysibm.sysdummy1
select current date + 3 years + 2 months + 15 days      from sysibm.sysdummy1
select current time + 5 hours - 3 minutes + 10 seconds      from sysibm.sysdummy1
select days(current date) – days(date(‘2000-01-01’))      from sysibm.sysdummy1
3)转换成字符型    select char(current date)                from sysibm.sysdummy1;    select char(current time)                from sysibm.sysdummy1;
   select char(current time + 12 hours )            from sysibm.sysdummy1;
4)字符类型转换为日期或时间类型
  select timestamp(‘2002-10-20-12.00.00.000000’)    from sysibm.sysdummy1;
  select timestamp(‘2002-10-20 12.00.00’)        from sysibm.sysdummy1;
  select date(‘2002-10-20’)                from sysibm.sysdummy1;
  select date(‘10/20/2002’)                from sysibm.sysdummy1;
  select time(’12:00:00’)                from sysibm.sysdummy1;
  select time(’12.00.00’)                 from sysibm.sysdummy1;
字符串的操作
1)拼接
    select concat(‘abc’,’def’) from sysibm.sysdummy1;
    select ‘abc’||’def’             from sysibm.sysdummy1;     -- 多值时使用
2)大小写转换
     upper,lower
3)返回第一个非空的值
    select coalesce(c1,c2,’abc’) from t1

收藏于 2011-01-30

转载于:https://www.cnblogs.com/ruanjianxian/p/6126922.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值