SQL Server,Oracle,DB2資料庫SQL語句比較

來源:互聯網
上載者:User

轉載自:龍塘灣

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’

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.