MySQL與Oracle 差異比較之三函數
函數
編號 類別 ORACLE MYSQL 1.23456,4) 一樣:
ORACLE:select round(1.23456,4) value from dualMYSQL:select round(1.23456,4) value
2 abs(-1) abs(-1) 功能: 將目前資料取絕對值使用1) value
3 ceil(-1.001)) ceiling(-1.001) 不當使用: ling(-1.001 ) value
oracle: select ceil(-1.001) value from dual
4 floor(-1.001) floor(-1.001) . floor(-1.001) value
oracle: select floor(-1.001) value from dual
種情況下,它們將返回最小或最大的字串傳下。
用法:
ROACLE: select max(user_int_key) from sd_usr;
MYSQL: select max(user_int_key) from sd_usr;
6 str最左邊的那個字符的 ASCII 碼值。如果 str 是一個空字串,
用法:
mysql:select ascii('a') value
oracle:select ascii('a') value from dual
CHAR(N,...) 功能:CHAR() 以整數型別解釋參數,傳回這個整數所代表的 ASCII 碼值所給出的字元
所組成的字串。 NULL 值將被忽略.
mysql:select char(97) value
oracle:select chr(97) value from dual
8 功能: 在字串 str 中所有出現的字串 from_str 都被 to_str 替換,然後傳回這個字串.
mysql: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') value oracle Replace('abcdef', 'bcd', 'ijklmn') value from dual
9 INSTR('sdsq','s',2) INSTR('sqds, s ORACLE: select INSTR('sdsq','s',2) value from dual(要求從位置2開始)
MYSQL: select INSTR('sdsq','s') value(從預設的位置1開始)
10 SUBSTR('abcd',2,2) substring('abcd',2,2) 函數名稱不同:
ORACLE: select substr('abcd',2,2) value from dselect subsub ',2,2) value
11 instr('abcdefg','ab') locate('ab','abcdefg') 位置要互換)
ORACLE: SELECT instr('abcdefg', 'ab') VALUE FROM DUAL
MYSQL: SELECT locate('ab', 'abcdefg') VALUE
ORACEL: SELECT length('AAAASDF') VALUE FROM DUAL
MYSQL: SELECT char_length('AAAASDF') VALUE
ORACLE: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') value from dual
MYSQL: SELECT REPLACE('abcdef', 'bcd', 'ijmn') 14 LPAD('abcd',14, '0') LPAD('abcd',14, '0') 一樣:
ORACLE: select LPAD('abcd',14, '0') value from dSQLual LPAD('abcd',14, '0') value from dual
15 UPPER(iv_user_id) UPPER(iv_user_id) 一樣:
ORACAC: PERselect PERLE_id) usr;
16 LOWER(iv_user_id) LOWER(iv_user_id) 一樣:
ORACLE: select LOWER(user_id) from sd_usrrMY: select LOWER(user_id) from sd_usr); nvl(u.email_address, 10) IFNULL( u.email_address, 10)
或
ORACLE: select u.email_address, nvl(u.email_address, 10) value from sdmail_address, nvl(u.email_address, 10) value from sd .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,而顯示結果中是10,而顯示結果不是在DB中用10替換其值)
select u.email_address, ISNULL(u.email_address) value from sd_usr u(如果u.email_address是NULL, 就顯示1
18 DECODE(iv_sr_status,g_sr_status_com, ld_sys_date, NULL) 無,請以IF或CASE語句取代.
IF語句格式:(expr1,expr2,expr3) 條件說明值值2,翻譯值2,...值n,翻譯值n,缺省值)
此函數的意義如下:
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
大商 㟜值語法:如果 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,'hh24-mi-ss') from dual;
mysql> select date_format(now(),'%Y-%m-%d');
mysql> select time_format (now(),'%H-%i-%S');
20 to_date(str,format) STR_TO_DATE(str,format) to_date(str,format) STR_TO_DATE(str,format) 函數名稱不同:
ORACLE:S'200date(360 'yyyy-mm-dd') VAULE FROM DUAL
SIGNED) 函數名稱不同:
TRUNC函數為指定元素所移除的日期值。
ORACLE: select trunc(-1.002) value from dual
MYSQL:select cast(-1.002 as SIGNED) value
MYSQL:
可用的類型 RY )
日期 : DATE
日期化 : DATETIME
無符號整數 : UNSIGNED
22 TO_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: . ( ) 寫法不同:
ORACLE:select SYSDATE value from dual
MYSQL:select now() value
select sysdate() value
24 Next_day 函數名稱不同:
ORACLE: SELECT Next_day(sysdate,7) value FROM DUAL
MYSQL: SELECT F_COMMON_NEXT_DAY(SYSDATE(), 3) value from DUAL;
(3:指著星期的索引值)傳回的指定的緊接著星期
25 ADD_MONTHS(sysdate, 2) DATE_ADD(sysdate(), interval 2 month) 函數名稱不同:
ORACLE: SELECT ADD_MONTHS(sysdate, ), interval 2 month) as value from DUAL;
26 2個日期相減(D1-D2) DATEDIFF(date1,date2) 功能: 返回兩個日期之間的天數。
用法:
mysql: SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
oracle: 直接用兩個日期相減(例如d1-d2=12.3)
oracle: 直接用兩個日期相減(如d1-d2=12.3)
MYSQL: 可以從JAVA得到錯誤代碼,錯誤狀態與錯誤訊息
MYSQL: 可以從JAVA中得到錯誤代碼,錯誤狀態與錯誤訊息
VALUES (username,MD5(password));
SELECT LAST_INSERT_ID() INTO id;
COMMIT; :
ORCALE: SELECT SUM(enable_flag) FROM SD_USR;
MYSQL : SELECT SUM(enable_flag) FROM SD_USR;