当前位置:首页 > oracle与db2有哪些区别
Oracle
日期函数2008-11-13 10:48DELIVERED_DATE >=
to_date('2008-09-07','yyyy-mm-dd') and DELIVERED_DATE < to_date('2008-09-08','yyyy-mm-dd') 日期函数:> add_months(d,n) 日期d加n个月last_day(d)
包含d的月份的最后一天的日期month_between(d,e) 日期d与e之间的月份数,e先于dnew_time(d,a,b)
a时区的日期和时间d在b时区的日期和时间next_day(d,day) 比日期d晚,由day指定的周几的日期sysdate 当前的系统日期和时间greatest(d1,d2,...dn) 给出的日期列表中最后的日期least(d1,k2,...dn) 给出的日期列表中最早的日期to_char(d [,fmt])
日期d按fmt指定的格式转变成字符串to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式round(d [,fmt])
日期d按fmt指定格式舍入到最近的日期trunc(d [,fmt])
1.下一个周五的日期select next_day(sysdate,6) from test;
2.两个月前的今天的日期select add_months(sysdate,-2) from test;
initcap(st) 返回st将每个单词的首字母大写,所有其他字母小写 lower(st) 返回st将每个单词的字母全部小写 upper(st) 返回st将每个单词的字母全部大写
concat(st1,st2) 返回st为st2接st1的末尾(可用操作符\)
lpad(st1,n[,st2]) 返回右对齐的st,st为在st1的左边用st2填充直至长度为n,st2的缺省为空格
rpad(st1,n[,st2]) 返回左对齐的st,st为在st1的右边用st2填充直至长度为n,st2的缺省为空格
ltrim(st[,set]) 返回st,st为从左边删除set中字符直到第一个不是set中的字符。缺省时,指的是空格
rtrim(st[,set]) 返回st,st为从右边删除set中字符直到第一个不是set中的字符。缺省时,指的是空格
replace(st,search_st[,replace_st]) 将每次在st中出现的search_st用replace_st替换,返回一个st。缺省时,删除search_st substr(st,m[,n]) n=返回st串的子串,从m位置开始,取n个字符长。缺省时,一直返回到st末端
length(st) 数值,返回st中的字符数
instr(st1,st2[,m[,n]]) 数值,返回st1从第m字符开始,st2第n次出现的位置,m及n的缺省值为1 例: 1.
select initcap('THOMAS'),initcap('thomas') from test;
initca initca ------ ------ Thomas Thomas 2.
select concat('abc','def') \first ----- abcdef 3.
select 'abc'||' '||'def' \first ----- abc def 4.
select lpad(name,10),rpad(name,5,'*') from test; lpad(name,10) rpad(name,5,'*') ------------ ---------------- mmx mmx** abcdef abcde 5.
去掉地址字段末端的点及单词st和rd
select rtrim(address,'. st rd') from test 6.
select name,replace(name,'a','*') from test; name replace(name,'a','*') ---- --------------------- great gre*t 7.
select substr('archibald bearisol',6,9) a,substr('archibald bearisol',11) b from test; a b
------- ------- bald bear bearisol 8.
select name,instr(name,' ') a,instr(name,' ',1,2) b from test; name a b
------- -------- --------- li lei 3 0 l i l 2 4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 转换函数:
nvl(m,n) 如果m值为null,返回n,否则返回m
to_char(m[,fmt]) m从一个数值转换为指定格式的字符串fmt缺省时,fmt值的宽度正好能容纳所有的有效数字
to_number(st[,fmt]) st从字符型数据转换成按指定格式的数值,缺省时数值格式串的大小正好为整个数 附:
to_char()函数的格式:
--------------------------------- 符号 说明
--------------------------------- 9 每个9代表结果中的一位数字 0 代表要显示的先导0
$ 美元符号打印在数的左边 L 任意的当地货币符号 . 打印十进制的小数点 , 打印代表千分位的逗号 --------------------------------- 例: 1.
select to_number('123.45')+to_number('234.56') form test; to_number('123.45')+to_number('234.56') ---------------------------------------- 358.01 2.
select to_char(987654321) from test; to_char(987654321) ------------------ 987654321 3.
select to_char(123,'$9,999,999') a,to_char(54321,'$9,999,999') b,to_char(9874321,'$9,999,999') c from test;
? ? ? ?
11:54 浏览 (66) 评论 (0) 分类: DB2
2010-01-17 缩略显示
工作中用到的SQL
文章分类:数据库
alter table tbmoudule drop column imouduleID; --删除列 mysql
select coalesce(col,0) ,value(col,'0') from tbl;--为null赋默认值 db2
alter table SJPT_SFSL add column flag int default 0 CREATE INDEX SJPT_SFSL_flag ON SJPT_SFSL(flag); 取得当前年月日:
SELECT current date FROM sysibm.sysdummy1 取得当前时分秒:
SELECT current time FROM sysibm.sysdummy1 取得当前年月日时分秒:
SELECT current timestamp FROM sysibm.sysdummy1 取得3个月前的日期
SELECT current date - 3 month FROM sysibm.sysdummy1 取得3天前的日期
SELECT current date - 3 day FROM sysibm.sysdummy1 call 存储过程名称();
alter session force parallel query parallel 4;ora并行处理就是为了将一个SQL语句分布到多个CPU上去执行
一亿条数据不算太大,如果你的表不是提供7*24联机服务,则可以参考如下步骤
1.CREATE TABLE NEW_TABLE PARALLEL X AS SELECT * FROM OLD_TABLE WHERE 1=2 2.ALTER TABLE NEW_TABLE NOLOGGING 3.
alter session force parallel ddl parallel x; alter session force parallel dml parallel x; alter session force parallel query parallel x;
insert /*+ append parallel(new_table,x) */ into new_table as
select xxx,nvl(a,-1),nvl(b,-1),nvl(c,-1),nvl(d,-1),xxx from old_table
? ? ? ?
10:57 浏览 (23) 评论 (0) 分类: DB2
2010-01-17 缩略显示
DB2自定义java函数
文章分类:数据库
我们知道,在DB2中提供的函数有限.在笔者的实际工作中就遇到了这个问题.所以我们在用到DB2的项目中,很多时候需要自己定义函数.好在DB2也提供了自定
共分享92篇相关文档