`
tangwenchao86
  • 浏览: 373942 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

SQL Server,Oracle,DB2数据库SQL语句比较

阅读更多
出处:http://www.cnblogs.com/cwy173/archive/2010/09/20/1831611.html

转载自:龙塘湾

1.1.1 取前n条记录

       SQL Server:      Select top n * from xtable

       Oracle:          Select * from xtable where rownum <=n

       DB2:             Select * from xtable fetch first n rows only

1.1.2 取当前日期

       SQL Server:      Select getdate()

       Oracle:          Select sysdate from dual

       DB2:             Select current   timestamp from sysibm.sysdummy1

      mysql: now()
     
     DATE_ADD(now(), INTERVAL 30 DAY) 今天后30天
 
1.1.3 连接字符串

SQL Server:    Select Hello+Toone

Oracle:        Select   Hello||Toone from dual

DB2:           Select   Hello||Toone from sysimb.sysdummy1

1.1.4 空值转换

       SQL Server:      SELECT   userid,username,isnull(email,0) FROM AUTH_USER

       Oracle:          SELECT   userid,username,nvl(email,0) FROM AUTH_USER

       DB2:             SELECT   userid,username,value(email,0) FROM AUTH_USER

1.1.5 类型转换

       SQL Server:      SELECT convert(varchar,getdate(),20)

       Oracle:          SELECT   to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual

       DB2:             SELECT   varchar(current timestamp) from sysibm.sysdummy1

       注1:

   ■SQL   Server中转换日期格式改变Style参数:20 ;   

   ■Oracle中转换日期格式改变格式化参数:yyyy-mm-dd   hh24:mi:ss   ‘yyyy’、’mm’、’dd’、’hh12’、’hh24’、’mi’、’ss’等;    

   ■Db2中转换日期格式改变系统常量:current timestamp ‘current date’、’current   time’等;
 
       注2:    

   ■SQL Server数据类型改变“数据类型参数”:int、varchar等;    

   ■Oracle数据类型改变函数:to_char()、to_date()、to_number()等;    

   ■DB2数据类型改变函数:varchar()、int()、date()、time()等;
  ■mysql中时间转换函数DATE_FORMAT(字段名称, '%Y-%m-%d %H:%i:%s')


1.1.6 取值判断

SQL Server:   select   case Convert = case when g.master_type =system    then 管理员     when g.master_type =roletype then 特殊角色    else 普通用户    end from global_code g

Oracle:       select   case g.master_type    when system    then 管理员    when roletype then 特殊角色   else 普通用户 end    AS caseConvert from global_code g

DB2:          select   case g.master_type   when system    then 管理员   when roletype then 特殊角色 else 普通用户   end    AS caseConvert From global_code g

1.1.7 位置 SQL

       Server:      select charindex(E,ABCDEF) select patindex(%E%,ABCDEF)

       Oracle:      select instr(ABCDEF,E) from dual

       DB2:         Select locate(E,ABCDEF) from

       sysibm.sysdummy1

1.1.8 其他函数          SQL Server    Oracle      DB2

   长度    Len()        Length()    Length()

   取子串 Substring() Substr()    Substr()                 

1.2     

       附

1.2.1 DB2V8.

1常用命令

■   创建数据库 在服务器上执行      db2 CREATE DB oatemp

■   删除数据库 在服务器上执行      db2 DROP DB oatemp

■   创建表空间 db2 CREATE USER TEMPORARY TABLESPACE USERSPACE1 MANAGED BY SYSTEM USING ( USERSPACE1)

         ■   启动数据库 切换用户         su – db2inst1      启动数据库:          db2start

         ■   关闭数据库 切换用户         su – db2inst1      关闭数据库          db2stop [force]

         ■   创建远程管理节点      进入   DB2命令窗口      db2 CATALOG TCPIP NODE asnode REMOTE 10.1.22.176 SERVER 50000    db2 CATALOG DB oadb2 AS oadb2 AT NODE asnode

■   连接数据库          db2 CONNECT   TO oadb2 USER db2inst1 USING ibmdb2

         ■   关闭数据库连接      db2 terminate

         ■   执行脚本            db2 -td! -vf ioa2.db2 -z info.log

■   导出脚本            db2look -d oadb2 -i db2inst1 -w ibmdb2 -e -o putsql.db2 -t auth_user db2look -d oadb2 -i db2inst1 -wibmdb2 -e -o putsq.db2

         ■   查看正在使用的端口 netstat -a

         ■   查询系统表          select count(*) from SYSCAT.TABLES where TABSCHEMA=’DB2INST1’      select count(*)   from SYSCAT.PROCEDURES where PROCSCHEMA=’DB2INST1’

         ■   常用命令 DB2 SELECT DROP TALBE ||TABNAME FROM SYSCAT.TABLES WHERE T ABSCHEMA=DB2INST1 AND TYPE=T >db2droptables.db2    DB2 SELECT DROP VIEW ||TABNAME FROM SYSCAT.TABLES WHERE T ABSCHEMA=DB2INST1 AND TYPE=V >db2dropviews.db2    DB2 –vf db2droptables.db2 –z info.log db2 SELECT username FROM auth_user FETCH FIRST 3 ROWS ONLY 

         ■   启动JDBC      db2jstrt JDBC APPLET SERVER 6789    

1.1       数据库移植注意事项

1.1.1 取前n条记录

SQL Server: Select top n * from xtable

Oracle:Select * from xtable where rownum <=n

DB2:Select * from xtable fetch first n rows only

1.1.2 取当前日期

SQL Server: Select getdate()

Oracle: Select sysdate from dual

DB2: Select current timestamp from sysibm.sysdummy1

1.1.3 连接字符串

SQL Server: Select 'Hello'+'Toone'

Oracle: Select 'Hello'||'Toone' from dual

DB2: Select 'Hello'||'Toone' from sysimb.sysdummy1

1.1.4 空值转换

SQL Server:SELECT userid,username,isnull(email,'0') FROM AUTH_USER

Oracle: SELECT userid,username,nvl(email,'0') FROM AUTH_USER

DB2:SELECT userid,username,value(email,'0') FROM AUTH_USER

1.1.5 类型转换

SQL Server: SELECT convert(varchar,getdate(),20)

Oracle:SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

DB2: SELECT varchar(current timestamp) from sysibm.sysdummy1

注1:

     ■SQL Server中转换日期格式改变Style参数:20 ;

     ■Oracle中转换日期格式改变格式化参数:yyyy-mm-dd hh24:mi:ss XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

         ‘yyyy’、’mm’、’dd’、’hh12’、’hh24’、’mi’、’ss’等;

     ■Db2中转换日期格式改变系统常量:current timestamp

         ‘current date’、’current time’等;

注2:

     ■SQL Server数据类型改变“数据类型参数”:int、varchar等;

     ■Oracle数据类型改变函数:to_char()、to_date()、to_number()等;

     ■DB2数据类型改变函数:varchar()、int()、date()、time()等;

1.1.6 取值判断

SQL Server:

select caseConvert =

      case when g.master_type ='system'    then '管理员'

           when g.master_type ='roletype' then '特殊角色'

           else '普通用户'

      end

from global_code g

Oracle:

select   case g.master_type

           when 'system'    then '管理员'

           when 'roletype' then '特殊角色'

           else '普通用户'

      end

      AS caseConvert

from global_code g

DB2:

   

select   case g.master_type

           when 'system'    then '管理员'

           when 'roletype' then '特殊角色'

           else '普通用户'

      end

      AS caseConvert

From global_code g

1.1.7 位置

SQL Server:

     select charindex('E','ABCDEF')

select patindex('%E%','ABCDEF')

Oracle:

     select instr('ABCDEF','E') from dual

DB2:

     Select locate('E','ABCDEF') from sysibm.sysdummy1

1.1.8 其他函数

      SQL Server      Oracle     DB2

长度   Len()          Length()   Length()

取子串Substring()    Substr()   Substr()

 

 

 

 

 

 

1.2       附

1.2.1 DB2V8.1常用命令

■   创建数据库在服务器上执行 db2 CREATE DB oatemp

■   删除数据库在服务器上执行db2 DROP DB oatemp

■   创建表空间

db2 "CREATE USER TEMPORARY TABLESPACE USERSPACE1 MANAGED BY SYSTEM USING (' USERSPACE1')"

■   启动数据库 切换用户 su – db2inst1

     启动数据库:db2start

■   关闭数据库 切换用户 su – db2inst1 关闭数据库 db2stop [force]

■   创建远程管理节点进入   DB2命令窗口

     db2 CATALOG TCPIP NODE asnode REMOTE 10.1.22.176 SERVER 50000

     db2 CATALOG DB oadb2 AS oadb2 AT NODE asnode

■   连接数据库

     db2 CONNECT TO oadb2 USER db2inst1 USING ibmdb2

■   关闭数据库连接

     db2 terminate

■   执行脚本

     db2 -td! -vf ioa2.db2 -z info.log

■   导出脚本

db2look -d oadb2 -i db2inst1 -w ibmdb2 -e -o putsql.db2 -t auth_user

db2look -d oadb2 -i db2inst1 -w ibmdb2 -e -o putsq.db2

■   查看正在使用的端口

     netstat -a

■   查询系统表

     select count(*) from SYSCAT.TABLES where TABSCHEMA=’DB2INST1’     select count(*) from SYSCAT.PROCEDURES where PROCSCHEMA=’DB2INST1’

ps:
1.类型转换  
 
--Oracle  
select to_number('123') from dual;  --123;   
select to_char(33) from dual;       --33;  
select to_date('2004-11-27','yyyy/mm/dd') from dual;--2004-11-27  
 
--Mysql  
select cast('123' as signed integer);   --123   
select cast(33 as char(2));     --33;  
select to_days('2000-01-01');       --730485  
 
--SqlServer   
select cast('123' as decimal(30,2));    --123.00  
select cast(33 as char(2));     --33;  
select convert(varchar(12) , getdate(), 120)  
 
2.四舍五入函数区别   
 
--Oracle  
select round(12.86*10)/10 from dual;    --12.9  
 
--Mysql  
select format(12.89,1);         --12.9   
 
--SqlServer  
select round(12.89,1);          --12.9   
 
3.日期时间函数  
 
--Oracle  
select sysdate from dual;       --日期时间   
 
--Mysql  
select sysdate();           --日期时间   
select current_date();          --日期  
 
--SqlServer  
select getdate();           --日期时间  
select datediff(day,'2010-01-01',cast(getdate() as varchar(10)));--日期相差天数  
 
4.Decode函数   
 
--Oracle   
select decode(sign(12),1,1,0,0,-1) from dual;--1   
 
--Mysql/SqlServer   
select case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--1   
 
5.判空函数   
 
--Oracle  
select nvl(1,0) from dual;      --1   
 
--Mysql  
select ifnull(1,0);         --1   
 
--SqlServer  
select isnull(1,0);         --1   
 
6.字符串连接函数  
 
--Oracle  
select '1'||'2' from dual;      --12  
select concat('1','2');         --12  
 
--Mysql  
select concat('1','2');         --12  
 
--SqlServer  
select '1'+'2';             --12  
 
7.记录限制函数  
 
--Oracle  
select 1 from dual where rownum <= 10;  
 
--Mysql  
select 1 from dual limit 10;  
 
--SqlServer  
select top 10 1  
 
8.字符串截取函数  
 
--Oracle  
select substr('12345',1,3) from dual;  
 
--Mysql/SqlServer  
select substring('12345',1,3);  
 
8.把多行转换成一合并列  
 
--Oracle  
select wm_concat(列名) from dual; --多行记录转换成一列之间用,分割  
 
--Mysql/SqlServer  
select group_concat(列名); 



说明:这是我在网上找到的,为了以后方便使用做一自己总结下来。
分享到:
评论

相关推荐

    SQL_Server,Oracle,DB2数据库SQL语句比较

    SQL_Server,Oracle,DB2数据库SQL语句比较

    数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换

    数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换

    微型Sql Server查询分析器、数据库比较工具,SQL语句编写助手

    微型Sql Server查询分析器: 有时为了解决问题,需要执行SQL脚本,但是电脑上又没有装SQL... 对主流数据库Sql Server,Oracle,DB2,MySql,Access等都可用,写脚本或存储过程时提示功能十分强大,十分方便,包你爱不释手

    数据库表数据转为insert sql语句

    1、对ms sql server及其他数据库库中类似int identity的数据库类型没有处理,转出来的sql语句直接执行时,还需要做一下处理. 2、不支持长字符集类型.比如ms sql server中的image,oracle中的blob,clob,long以及db2中...

    Sql经典练习题库(附答案)

    如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。 美国国家标准局(ANSI)与国际...

    Oracle迁移到DB2 SQL语句差异

    在做项目的过程中,客户有可能会要求换数据库,那么除啦配置上的差异,还有最基本的Sql语句的差别,在这儿将这全部列出,为开发人员减轻痛苦.

    Sqlserver数据库操作利器SqlDbxPersonal

    支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server,MySQL 和ODBC数据源。  可以看到库中有多少表、多少存储过程、多少触发器、多少视图、多少函数,可以直接看到每个表的数据行数,可以导出查询结果的...

    DbVisualizerPro 12.0.7 x86/x64 支持Oracle SQLServer MySQL 等多数据库

    DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具,内置SQL语句编辑器(支持语法高亮),凡是具有JDBC数据库接口的数据库都可以管理,已经在Oracle, SQLServer, Sybase, DB2, MySQL, InstantDB, Cloudcape, ...

    oracle ,sybase,mysql,db2各种数据库监控

    oracle ,sybase,mysql,db2各种数据库监控脚本,及相关SQL语句。

    Oracle数据库学习指南

    26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统...

    SQL server的sql语句知识体系框架

    对sql语句的学习,复习都有帮助。 SQL 概述 SQL,一般发音为 sequel,SQL 的全称 Structured Query Language),SQL 用来和数据库打交道,完成和数据库的通信,SQL 是一套标准。但是每一个数据库都有自己的特性别的...

    sqlDBX3.47(数据库前端)

    对于用oracle的人来说,用sqlserver的人可是幸福的多,为什么呢。就是因为sqlserver有企业管理器。。有可视化的界面来操作数据库。...支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server 和ODBC数据源。

    程序员的SQL金典 各个主流数据库的sql介绍

    详细介绍各种数据库的sql语句 比如oracle ,db2,mysqlserver ,sqlserver2000

    JAVA数据库连接语句大全

    JAVA的一些数据库连接的语句~ 含Oracle,DB2数据库,Sql Server,MySQL,access等众多数据库连接语句指南~ 个人总结,与大家分享~

    SQL数据库管理,编辑,查询工具

    SqlDbx是一个多功能的SQL数据库管理,编辑,查询工具,该数据库管理工具支持oracle,sybase ase, ibm,db2/udb, microsoftsql server 与odbc数据源,功能支持sql编辑,sql查询。 SqlDbx数据库编辑及查询工具,支持SQL...

    Sql语句和数据库教程

    内容概要:介绍几种经常使用的数据库,如MySQL,mssql,Oracle,DB2,Sybase。以及SQL语法,SQL语句。表结构、视图、函数、索引等,常见数据库问题的处理。 适合人群:需要系统学习数据库和SQL的,想提升技能的,想...

    功能强大的连接数据库软件A5

    可以连接Oracle,DB2,SQL server,postgresql,mysql等多种数据库,功能强大,就是在日本网站下载的,有可能需要懂点日语

    数据库嵌入式SQL介绍与应用

    4.3.1 ORACLE动态SQL语句的一些特点 72 4.3.2 使用动态SQL的四种方法 72 4.3.3 SQLDA 75 第五节INFORMIX的嵌入SQL/C语言 89 5.1 一个简单的入门例子 89 5.2 宿主变量 91 5.3 嵌入SQL的处理过程 96 5.4 动态SQL语言 ...

    数据库工具DbVisualizerPro12.1.5 x86/x64 支持Oracle SQLServer MySQL等

    DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具,内置SQL语句编辑器(支持语法高亮),凡是具有JDBC数据库接口的数据库都可以管理,已经在Oracle, Sybase, DB2, MySQL, InstantDB, Cloudcape, HyperSonic ,...

Global site tag (gtag.js) - Google Analytics