MySQL と Oracle の違いの比較 3 関数
関数
数値 カテゴリ ORACLE MYSQL コメント
1 数値関数round(1.23456,4)round(1.23456,4) 同じ:
ORACLE: selectround(1.23456,4) value from Dual
MYSQL: select Round(1.23456,4) value
2 abs(-1) abs(-1) 関数: 現在のデータの絶対値を取得します
使い方: Oracle と mysql の使い方は同じです
mysql: select abs(- 1) value
oracle: select abs(-1) value from Dual
3 ceil(-1.001)) Ceiling(-1.001) 関数: X 以上の最小の整数を返す
使用法:
mysqls: select Ceil(-1.001 ) value
oracle: select ceil(-1.001) value from Dual
4 Floor(-1.001) Floor(-1.001) 関数: X 以下の最大整数値を返す
使用法:
mysql: select Floor(-1.001) 値
oracle: デュアル
から Floor(-1.001) 値を選択します
5 Max(expr)/Min(expr) Max(expr)/Min(expr) 関数: の最小値または最大値を返します。式MIN() と MAX() は文字列引数を受け入れることができ、この場合、渡された最小文字列または最大文字列を返します。
使用法:
ROACLE: select max(user_int_key) from sd_usr;
MYSQL: select max(user_int_key) from sd_usr;
使用法:
mysql:select ascii('a') value
oracle:select ascii('a') value from Dual
7 CHAR(N,.. .) CHAR(N,...) 関数: CHAR() は、整数型のパラメーターを解釈し、この整数で表される ASCII コード値で指定された文字
使用法:
mysql:select char(97) value
oracle:select chr(97) value from Dual
8 REPLACE(str,from_str,to_str) REPLACE(str,from_str, to_str) 関数: 文字列 str 内の文字列 from_str がすべて to_str に置き換えられ、その文字列が返されます。 : SELECT Replace('abcdef', 'bcd', 'ijklmn') value from Dual
9 INSTR('sdsq','s',2) INSTR('sdsq','s') の数パラメータが異なります
ORACLE: select INSTR('sdsq','s',2) value from Dual (位置 2 から開始する必要があります)
MYSQL: select INSTR('sdsq','s') value (デフォルトから開始)位置 1)
ORACLE: select substr('abcd',2,2) value from Dual
MYSQL : select substring('abcd ',2,2) value
instr -> :locate の部分文字列と合計文字列 位置は交換する必要があります)
ORACLE: SELECT instr('abcdefg', 'ab') VALUE FROM DUAL
MYSQL: SELECTlocate('ab', 'abcdefg') VALUE
12 length (str) char_length() 関数名 相違点:
ORACEL: SELECT length('AAAASDF') VALUE FROM DUAL
MYSQL: SELECT char_length('AAAASDF') VALUE
ORACLE: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') 値からのデュアル
MYSQL: SELECT REPLACE('abcdef', 'bcd ', 'ijklmn') 値
ORACLE: select LPAD('abcd',14, ' 0') デュアル
MYSQL からの値: デュアル
ORACLE: sd_usr から UPPER(user_id) を選択;
MYSQL: sd_usr から UPPER(user_id) を選択します ;
16 LOWER(iv_user_id) LOWER(iv_user_id) 同じ:
ORACLE: sd_usr から LOWER(user_id) を選択;
MYSQL: sd_usr から LOWER(user_id) を選択
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 (if u .email_address=NULl、その値を DB の 10 に置き換えます)
MYSQL: sd_usr から u.email_address、IFNULL(u.email_address, 10) の値を選択します u(u.email_address=NULl の場合、表示される結果は 10、代わりにDB 内の値を 10 に置き換えます)
sd_usr u から u.email_address、ISNULL(u.email_address) 値を選択します (u.email_address が NULL の場合は 1
18 DECODE(iv_sr_status,g_sr_status_com, ld_sys_date, NULL) なし。代わりに IF または CASE ステートメントを使用してください。
IF ステートメントの形式: (expr1, expr2, expr3) 説明: decode(条件、値 1、変換値 1)。 , 値2, 翻訳値2,...値n, 翻訳値n, デフォルト値)
この関数の意味は以下の通りです:
IF条件=値1THEN
RETURN(翻訳値1)
ELSIF条件=値2 THEN
RETURN (翻訳値 2)
...
ELSIF 条件 = 値 n THEN
RETURN (翻訳値 n)
ELSE
RETURN (デフォルト値)
END IF
2. mysql If 構文説明
関数: If expr1 が TRUE (expr1 0 および 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;
mysql> select date_format(now(),'%Y-%m-%d');
mysql> time_format (now(),'%H-%i-%S');
20 to_date(str,format) STR_TO_DATE(str,format) 関数名は異なります:
ORACLE:SELECT to_date('2009-3- 6', 'yyyy-mm-dd') VAULE FROM DUAL
21 trunc(-1.002) Cast( -1.002 as SIGNED) 関数名が異なります:
TRUNC 関数は、指定された要素の日付値を切り捨てます。
MYSQL: キャスト (-1.002 as SIGNED) 値を選択
MYSQL:
文字セット変換: CONVERT(xxx USING gb2312)
型変換は SQL Server と同じです。 、型パラメーターは少し異なります: CAST(xxx AS type)、CONVERT(xxx, type)、型は次の型を使用する必要があります:
使用可能な型
バイナリ、バイナリ プレフィックスの効果: BINARY
文字型、パラメータを取ることができます: CHAR( )
日付: DATE
時刻: TIME
日付と時刻の型: DATETIME 浮動小数点: DECIMAL
整数: SIGNED
符号なし整数: 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;
23 Date function SYSDATE now( ) / SYSDATE( ) さまざまな書き込み方法:
ORACLE:select SYSDATE value from Dual
MYSQL:select now() value
24 Next_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;
25 ADD_MONTHS(sysdate, 2) DATE_ADD(sysdate(), 間隔 2 か月) 関数名は異なります:
ORACLE: SELECT ADD_MONTHS(sysdate, 2) as value from DUAL;
MYSQL: SELECT DATE_ADD( sysdate()、間隔 2 か月) を DUAL からの値として使用します。
26 2 つの日付の減算 (D1-D2) DATEDIFF(date1,date2) 関数: 2 つの日付間の日数を返します。
使用法:
mysql: SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
oracle: 2 つの日付を直接減算します (d1-d2=12.3 など)
27 SQL 関数 SQLCODE MYSQL には対応する関数はありませんが、JAVA には SQLException があります。 getErrorCode() 関数はエラー番号を取得できます。Oracle の組み込み関数 SQLCODE および SQLERRM は、それぞれ Oracle のエラー コードとエラー メッセージを返すために OTHERS プロセッサで特別に使用されます。
MYSQL: JAVA からエラー コード、エラー ステータス、エラー メッセージを取得できます。
28 SQLERRM MYSQL には対応する関数はありませんが、JAVA には SQLException が発生します。 getMessage() 関数はエラー メッセージを取得できます。Oracle の組み込み関数 SQLCODE および SQLERRM は、それぞれ Oracle のエラー コードとエラー メッセージを返すために OTHERS プロセッサで特別に使用されます。
MYSQL: JAVA からエラー コード、エラー ステータス、エラー メッセージを取得できます
29 SEQ_BK_DTL_OPT_INT_KEY.NEXTVAL 自動拡張カラム MYSQL では、次のメソッドを使用して最新の ID を取得します。
START TRANSACTION ;
INSERT INTO user(ユーザー名, パスワード)
VALUES (ユーザー名,MD5(パスワード));
SELECT LAST_INSERT_ID() INTO id;
ORCALE: SELECT SUM(enable_flag) FROM SD_USR;
MYSQL : SELECT SUM(enable_flag) FROM SD_USR;
を超える場合はエラーが報告されます。