oracle数据类型的用法注意事项

oracle数据类型的用法注意事项
oracle的数据类型有以下类型:
char:定长字符串,会用空格填充最大长度
nchar:包含unicode格式数据的定长字符串
varchar2:变长字符串,不会用空格填充最大长度
nvarchar2:包含unicode的变长字符串
raw:变长二进制数据类型
number:存储精度最多达38位的数字
binary_float:10g以后新增,32位单精度浮点数
binary_double:10g以后新增,32位单精度浮点数
long:最多2G字节的字符数据,现在也不用
long raw:最多2G字节的二进制数据,现在也不用
date:包含7个属性的时间类型,不带小数位的秒数
timestamp:时间类型,不带小数位的秒数
interval year to month:定宽的时段数据类型,存储年,月的时间段
interval day to second:定宽的时段数据类型,最多又9位小数位,存储天,小时,分钟和秒的时间段
bfile:不一致读,不如说是指针
blob:最多4G的二进制数据
clob:最多4G字符数据
rowid:数据库中一行的物理地址
urowid:主键的rowid
char与varchar,尽量避免使用char,即使用char(1)
数值在性能方面number比其他两个低
可以使用cast转换为其他两个类型
时间类型的处理:
处理interval类型时,extract函数可以很好的处理,如下:
select dt2-dt1
  from (select to_timestamp('29-feb-2000 01:02:03.122000',
                            'dd-mon-yyyy hh24:mi:ss.ff') dt1,
               to_timestamp('15-mar-2001 11:22:33.000000',
                            'dd-mon-yyyy hh24:mi:ss.ff') dt2
          from dual )

select extract( day    from dt2-dt1 ) day,
       extract( hour   from dt2-dt1 ) hour,
       extract( minute from dt2-dt1 ) minute,
       extract( second from dt2-dt1 ) second
  from (select to_timestamp('29-feb-2000 01:02:03.122000',
                            'dd-mon-yyyy hh24:mi:ss.ff') dt1,
               to_timestamp('15-mar-2001 11:22:33.000000',
                            'dd-mon-yyyy hh24:mi:ss.ff') dt2
          from dual )

select extract(year from systimestamp) year,
       extract(month from systimestamp) month,
       extract(day from systimestamp) day,
       extract(minute from systimestamp) minute,
       extract(second from systimestamp) second,
       extract(timezone_hour from systimestamp) th,
       extract(timezone_minute from systimestamp) tm,
       extract(timezone_region from systimestamp) tr,
       extract(timezone_abbr from systimestamp) ta
  from dual
可以看到在数据库尽量使用timestamp字段更好

猜你喜欢

转载自aigo-h.iteye.com/blog/1918081