设为首页 收藏本站
查看: 800|回复: 0

[经验分享] 对比SQL SERVER,ORACLE,DB2上常用的函数!

[复制链接]

尚未签到

发表于 2016-8-4 10:36:27 | 显示全部楼层 |阅读模式
  1.字符函数:
  SQL SERVER中字符不区分大小写。
但lower,upper 函数在SQL SERVER,ORACLE和DB2中是通用的。
如:SELECT empno, ename, deptno
FROM emp
WHERE upper(ename) =upper( 'blake');

  
  连接字符举例:
·SQL SERVER:select ‘Good’+’String’
  ·ORACLE:select concat('Good','String') from dual;
·DB2:select concat('Good','String') from sysibm.sysdummy1;

操纵字符的函数举例:
ORACLE和DB2的写法如下:
SELECT ename, CONCAT (ename, job), LENGTH(ename),
INSTR(ename, 'A')
FROM emp
WHERE SUBSTR(job,1,5) = 'SALES';
SQL SERVER的等价语法如下:
SQL SERVER: SELECT ename, (ename+job), LEN(ename),
PATINDEX('%A%',ename)
FROM emp
WHERE SUBSTRING(job,1,5) = 'SALES';

2.日期函数:
取当前日期:
SQL SERVER: select getdate()
ORACLE: select sysdate from dual;
DB2:SELECT current date FROM sysibm.sysdummy1 ;

在上期上使用算术操作符举例:
ORACLE上的写法:
SELECT ename,(sysdate-hiredate)/7 weeks
FROM emp WHERE deptno=10;
SQL SERVER上的写法:
SELECT ename,datediff(day,hiredate,GETDATE())/7 weeks
FROM emp WHERE deptno=10;
注:
·datepart()函数:以整数的形式返回时间的指定部分。
·用法:datepart(datepart,date)
·参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute。
·date是所指定的时间。
·例子:
·SELECT DATEPART(month, GETDATE()) AS 'Month Number‘
·SELECT DATEPART(day, GETDATE()) AS 'Month Number'
·datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。如1991-6-12和1991-6-21之间以天
·来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月
·用法:datediff(darepart,date1,date2)
·参数说明:datepart(同上)
·date1、date2(同上date)
·例子:
·select datediff(month,'1991-6-12','1992-6-21') as a
·select datediff(day,'1991-6-12','1992-6-21') as a

DB2 上的写法:

SELECT ename,(sysdate-hiredate)/7 weeks
FROM emp WHERE deptno=10;在DB2上的sysdate是有时间戳的。不能用于计算。但语句不报错,得到的是一个错误的结果。请注意!
正确方法:SELECT ename,(days(current date)- days(date(hiredate)))/7 weeks
FROM emp WHERE deptno=10;










3.转换函数:
在SQL SERVER上日期转字符举例:
SELECT ename,
convert(char(10), hiredate) HIREDATE
FROM emp;
或者:
SELECT ename,
cast(hiredate as char(10)) HIREDATE
FROM emp;
ORACLE上日期转字符举例:
SELECT ename,
TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE
FROM emp;

DB2上日期转字符举例:
select char(current date) from sysibm.sysdummy1;
select char(current time) from sysibm.sysdummy1;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252665-1-1.html 上篇帖子: [Oracle]高效的PL/SQL程序设计(四)--批量处理 下篇帖子: 每天定时检查Oracle alert日志并发送mail
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表