ホームページ  >  記事  >  データベース  >  MySQL と Oracle の違いの比較 3 関数

MySQL と Oracle の違いの比較 3 関数

黄舟
黄舟オリジナル
2017-01-17 11:48:011279ブラウズ

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;

6 文字列関数 ascii(str) ascii(str) 関数: 文字列 str の左端の文字を返す ASCII コード価値。 str が空の文字列の場合、戻り値は 0 です。 str が NULL の場合、戻り値も NULL になります。

使用法:
mysql:select ascii('a') value
oracle:select ascii('a') value from Dual


7 CHAR(N,.. .) CHAR(N,...) 関数: CHAR() は、整数型のパラメーターを解釈し、この整数で表される ASCII コード値で指定された文字

で構成される文字列を返します。 NULL 値は無視されます。

使用法:
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)

10 SUBSTR('abcd',2,2) substring('abcd',2,2) 関数名が異なります:

ORACLE: select substr('abcd',2,2) value from Dual
MYSQL : select substring('abcd ',2,2) value

11 instr('abcdefg','ab')locate('ab','abcdefg') 関数名は異なります:

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

13 REPLACE('abcdef', 'bcd', 'ijklmn' ) REPLACE('abcdef', 'bcd', 'ijklmn') 同じ:

ORACLE: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') 値からのデュアル
MYSQL: SELECT REPLACE('abcdef', 'bcd ', 'ijklmn') 値

14 LPAD('abcd',14, '0') LPAD('abcd',14, '0') 以下と同じ:

ORACLE: select LPAD('abcd',14, ' 0') デュアル
MYSQL からの値: デュアル

15 から LPAD('abcd',14, '0') 値を選択 UPPER(iv_user_id) UPPER(iv_user_id) 同じ:

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 が表示され、それ以外の場合は 0 が表示されます)

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;

SQL> select to_char(sysdate,'hh24-mi-ss') 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

MYSQL: SELECT STR_TO_DATE('2004-03-01', '%Y-%m-%d') VAULE


21 trunc(-1​​.002) Cast( -1.002 as SIGNED) 関数名が異なります:
TRUNC 関数は、指定された要素の日付値を切り捨てます。

ORACLE: デュアルから trunc(-1​​.002) 値を選択

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;

SIGNED INTEGER: 符号付き整数


23 Date function SYSDATE now( ) / SYSDATE( ) さまざまな書き込み方法:
ORACLE:select SYSDATE value from Dual
MYSQL:select now() value

select sysdate() 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;

(3: 週のインデックス値を参照) は、指定された値を返します。翌週の日付


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;

30 SUM(enable_flag) SUM(enable_flag) 同じ:

ORCALE: SELECT SUM(enable_flag) FROM SD_USR;
MYSQL : SELECT SUM(enable_flag) FROM SD_USR;

31 DBMS_OUTPUT.PUT_LINE(SQLCODE) その機能はテストのためにコンソールに出力することであり、影響はありません。移行について。 dbms_output.put_line は 1 行あたり 255 文字しか表示できず、


を超える場合はエラーが報告されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。