久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL與Oracle差異比較之函數的示例分析

147次閱讀
沒有評論

共計 5592 個字符,預計需要花費 14 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 MySQL 與 Oracle 差異比較之函數的示例分析,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

函數

編號類別 ORACLEMYSQL 注釋 1 數字函數 round(1.23456,4)round(1.23456,4)一樣:
 ORACLE:select round(1.23456,4) value from dual
 MYSQL:select round(1.23456,4) value2abs(-1)abs(-1)功能:  將當前數據取絕對值
  用法: oracle 和 mysql 用法一樣
 mysql: select abs(-1) value
 oracle: select abs(-1) value from dual
 3ceil(-1.001))ceiling(-1.001) 功能:  返回不小于  X  的最小整數
  用法:
 mysqls: select ceiling(-1.001) value
 oracle: select ceil(-1.001) value from dual
 4floor(-1.001)floor(-1.001) 功能:  返回不大于  X  的最大整數值
  用法:
 mysql: select floor(-1.001) value
 oracle: select floor(-1.001) value from dual
 
 5Max(expr)/Min(expr)Max(expr)/Min(expr) 功能: 返回  expr  的最小或最大值。MIN()  和  MAX()  可以接受一個字符串參數;在這
  種情況下,它們將返回最小或最大的字符串傳下。
  用法: 
 ROACLE: select max(user_int_key) from sd_usr;
 MYSQL: select max(user_int_key) from sd_usr;6 字符串函數 ascii(str)ascii(str) 功能: 返回字符串  str  最左邊的那個字符的  ASCII  碼值。如果  str  是一個空字符串,
  那么返回值為  0。如果  str  是一個  NULL,返回值也是  NULL.
  用法: 
 mysql:select ascii(a) value
 oracle:select ascii(a) value from dual
 7CHAR(N,…)CHAR(N,…)功能:CHAR()  以整數類型解釋參數,返回這個整數所代表的  ASCII  碼值給出的字符
  組成的字符串。NULL  值將被忽略.
  用法: 
 mysql:select char(97) value
 oracle:select chr(97) value from dual
 
 8REPLACE(str,from_str,to_str)REPLACE(str,from_str,to_str) 功能:  在字符串  str  中所有出現的字符串  from_str  均被  to_str  替換,然后返回這個字符串.
  用法: 
 mysql: SELECT REPLACE(abcdef , bcd , ijklmn) value 
 oracle: SELECT Replace(abcdef , bcd , ijklmn) value from dual
 
 
 9INSTR(sdsq , s ,2)INSTR(sdsq , s)參數個數不同
 ORACLE: select INSTR(sdsq , s ,2) value from dual(要求從位置 2 開始)
 MYSQL: select INSTR(sdsq , s) value(從默認的位置 1 開始)10SUBSTR(abcd ,2,2)substring(abcd ,2,2) 函數名稱不同:
 ORACLE: select substr(abcd ,2,2) value from dual
 MYSQL: select substring(abcd ,2,2) value11instr(‘abcdefg , ab)locate(‘ab , abcdefg)函數名稱不同:
 instr – locate(注意:locate 的子串和總串的位置要互換)
 ORACLE: SELECT instr(abcdefg , ab) VALUE FROM DUAL
 MYSQL: SELECT locate(ab , abcdefg) VALUE12length(str)char_length()函數名稱不同:
 ORACEL: SELECT length(AAAASDF) VALUE FROM DUAL
 MYSQL: SELECT char_length(AAAASDF) VALUE13REPLACE(abcdef , bcd , ijklmn)REPLACE(abcdef , bcd , ijklmn)一樣:
 ORACLE: SELECT REPLACE(abcdef , bcd , ijklmn) value from dual
 MYSQL: SELECT REPLACE(abcdef , bcd , ijklmn) value14LPAD(abcd ,14, 0)LPAD(abcd ,14, 0)一樣:
 ORACLE: select LPAD(abcd ,14, 0) value from dual
 MYSQL: select LPAD(abcd ,14, 0) value from dual15UPPER(iv_user_id)UPPER(iv_user_id)一樣:
 ORACLE: select UPPER(user_id) from sd_usr;
 MYSQL: select UPPER(user_id) from sd_usr;16LOWER(iv_user_id)LOWER(iv_user_id)一樣:
 ORACLE: select LOWER(user_id) from sd_usr;
 MYSQL: select LOWER(user_id) from sd_usr;17 控制流函數 nvl(u.email_address, 10)IFNULL(u.email_address, 10)
  或
 ISNULL(u.email_address) 函數名稱不同(根據不同的作用進行選擇):
 ORACLE: select u.email_address, nvl(u.email_address, 10) value from sd_usr u (如果 u.email_address=NULl, 就在 DB 中用 10 替換其值)
 MYSQL: select u.email_address, IFNULL(u.email_address, 10) value from sd_usr u(如果 u.email_address=NULl, 顯示結果中是 10,而不是在 DB 中用 10 替換其值)
 select u.email_address, ISNULL(u.email_address) value from sd_usr u(如果 u.email_address 是 NULL,  就顯示 1 true , 否則就顯示 0 false)18DECODE(iv_sr_status,g_sr_status_com, ld_sys_date, NULL)無,請用 IF 或 CASE 語句代替.
 IF 語句格式:(expr1,expr2,expr3)說明: 
 1. decode(條件, 值 1, 翻譯值 1, 值 2, 翻譯值 2,… 值 n, 翻譯值 n, 缺省值)
  該函數的含義如下:
 IF  條件 = 值 1 THEN
  RETURN(翻譯值 1)
 ELSIF  條件 = 值 2 THEN
  RETURN(翻譯值 2)
  ……
 ELSIF  條件 = 值 n THEN
  RETURN(翻譯值 n)
 ELSE
  RETURN(缺省值)
 END IF
 
 2. mysql If 語法說明
  功能:  如果  expr1  是 TRUE (expr1 0 and expr1 NULL),則 IF() 的返回值為 expr2;
  否則返回值則為  expr3。IF()  的返回值為數字值或字符串值,具體情況視其所在
  語境而定。
  用法: 
 mysql: SELECT IF(1 2,2,3);
 19 類型轉換函數 TO_CHAR(SQLCODE)date_format/ time_format 函數名稱不同
 SQL select to_char(sysdate, yyyy-mm-dd) from dual;
 SQL select to_char(sysdate, hh34-mi-ss) from dual;
 mysql select date_format(now(), %Y-%m-%d
 mysql select time_format(now(), %H-%i-%S 20to_date(str,format)STR_TO_DATE(str,format) 函數名稱不同:
 ORACLE:SELECT to_date(2009-3-6 , yyyy-mm-dd) VAULE FROM DUAL
 MYSQL: SELECT STR_TO_DATE(2004-03-01 , %Y-%m-%d) VAULE21trunc(-1.002)cast(-1.002 as SIGNED)函數名稱不同:
 TRUNC 函數為指定元素而截去的日期值。
 ORACLE: select trunc(-1.002) value from dual
 MYSQL:select cast(-1.002 as SIGNED) value
 MYSQL:
  字符集轉換  :  CONVERT(xxx  USING  gb2312)
  類型轉換和 SQL Server 一樣, 就是類型參數有點點不同   : CAST(xxx  AS  類型)  ,  CONVERT(xxx, 類型),類型必須用下列的類型:
 
  可用的類型  
  二進制, 同帶 binary 前綴的效果  : BINARY 
  字符型, 可帶參數  : CHAR() 
  日期  : DATE 
  時間: TIME 
  日期時間型  : DATETIME 
  浮點數  : DECIMAL 
  整數  : SIGNED 
  無符號整數  : UNSIGNED 22TO_NUMBER(str)CAST(123 AS SIGNED INTEGER)函數名稱不同
 ORACLE:SELECT TO_NUMBER(123) AS VALUE FROM DUAL;
 MYSQL: SELECT CAST(123 AS SIGNED INTEGER) as value;
 SIGNED INTEGER: 帶符號的整形 23 日期函數 SYSDATEnow() / SYSDATE() 寫法不同:
 ORACLE:select SYSDATE value from dual
 MYSQL:select now() value
 select sysdate() value24Next_day(sysdate,7)自定義一個函數:F_COMMON_NEXT_DAY(date,int)函數名稱不同:
 ORACLE: SELECT Next_day(sysdate,7) value FROM DUAL
 MYSQL: SELECT F_COMMON_NEXT_DAY(SYSDATE(), 3) value from DUAL;
 (3: 指星期的索引值)返回的指定的緊接著下一個星期的日期 25ADD_MONTHS(sysdate, 2)DATE_ADD(sysdate(), interval 2 month)函數名稱不同:
 ORACLE: SELECT ADD_MONTHS(sysdate, 2) as value from DUAL;
 MYSQL: SELECT DATE_ADD(sysdate(), interval 2 month) as value from DUAL;262 個日期相減 (D1-D2)DATEDIFF(date1,date2) 功能:  返回兩個日期之間的天數。
  用法:
 mysql: SELECT DATEDIFF(2008-12-30 , 2008-12-29) AS DiffDate
 oracle:  直接用兩個日期相減(比如 d1-d2=12.3)
 27SQL 函數 SQLCODEMYSQL 中沒有對應的函數,但 JAVA 中 SQLException。getErrorCode()函數可以獲取錯誤號 Oracle 內置函數 SQLCODE 和 SQLERRM 是特別用在 OTHERS 處理器中,分別用來返回 Oracle 的錯誤代碼和錯誤消息。
 MYSQL:  可以從 JAVA 中得到錯誤代碼,錯誤狀態和錯誤消息 28SQLERRMMYSQL 中沒有對應的函數,但 JAVA 中 SQLException。getMessage()函數可以獲取錯誤消息 Oracle 內置函數 SQLCODE 和 SQLERRM 是特別用在 OTHERS 處理器中,分別用來返回 Oracle 的錯誤代碼和錯誤消息。
 MYSQL:  可以從 JAVA 中得到錯誤代碼,錯誤狀態和錯誤消息 29SEQ_BK_DTL_OPT_INT_KEY.NEXTVAL 自動增長列在 MYSQL 中是自動增長列.  如下方法獲取最新 ID:
  START TRANSACTION; 
  INSERT INTO user(username,password)
  VALUES (username,MD5(password));
  SELECT LAST_INSERT_ID() INTO id;
  COMMIT;30SUM(enable_flag)SUM(enable_flag)一樣:
 ORCALE: SELECT SUM(enable_flag) FROM SD_USR;
 MYSQL: SELECT SUM(enable_flag) FROM SD_USR;31DBMS_OUTPUT.PUT_LINE(SQLCODE)在 MYSQL 中無相應的方法,其作用是在控制臺中打印,用于測試,對遷移無影響。dbms_output.put_line 每行只能顯示 255 個字符,超過了就會報錯

關于“MySQL 與 Oracle 差異比較之函數的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計5592字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 通道| 宜兰市| 凌源市| 东至县| 涡阳县| 丰镇市| 宽甸| 祥云县| 德安县| 普定县| 扶沟县| 莱州市| 舞钢市| 汾阳市| 睢宁县| 健康| 咸丰县| 台中县| 聂荣县| 东城区| 林西县| 宁津县| 湖南省| 黄陵县| 林甸县| 宽甸| 武川县| 汉川市| 彰化市| 庄浪县| 鹰潭市| 甘谷县| 塔河县| 土默特右旗| 轮台县| 吉安市| 陇川县| 林口县| 澄城县| 来安县| 凤城市|