zoukankan      html  css  js  c++  java
  • SQL Server,Oracle,DB2数据库SQL语句比较

    转载自:龙塘湾

    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   ‘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   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’

     

  • 相关阅读:
    复习一些奇怪的题目
    NOIP 考前 KMP练习
    NOIP 考前 并查集复习
    NOIP 考前 Tarjan复习
    NOIP 考前 图论练习
    BZOJ 1468 树分治
    Codeforces Round #376 (Div. 2)
    CodeVS 线段覆盖1~5
    Luogu 3396 权值分块
    BZOJ 2743 树状数组
  • 原文地址:https://www.cnblogs.com/cwy173/p/1831611.html
Copyright © 2011-2022 走看看