sql >> データベース >  >> RDS >> MariaDB

MariaDB RTRIM()とRTRIM_ORACLE():違いは何ですか?

    MariaDBにはRTRIM()があります 関数とRTRIM_ORACLE() 働き。どちらの関数も基本的に同じことをします。ただし、わずかな違いがあります。

    違い

    違いは、各関数が空の文字列を処理する方法にあります。

    • RTRIM() 文字列から末尾のスペースを削除します。空の文字列が渡されると、結果はOracleモードであるかどうかによって異なります。 Oracleモードの場合、nullを返します。 。それ以外の場合は、空の文字列を返します。
    • RTRIM_ORACLE() RTRIM()のOracleモードバージョンの同義語です。 。 RTRIM()のように動作します Oracleモードの場合(nullを返します Oracleモードでない場合でも、空の文字列が渡された場合)。

    したがって、RTRIM_ORACLE() RTRIM()とまったく同じように機能します Oracleモードの場合。ただし、Oracleモードでない場合の唯一の違いは、各関数が空の文字列を処理する方法です。

    これは例で最もよく説明されています。

    デフォルトモード

    デフォルトモードでのこれらの機能の比較は次のとおりです。

    SET SQL_MODE=DEFAULT;
    SELECT
        RTRIM(''),
        RTRIM_ORACLE('');

    結果:

    +-----------+------------------+
    | RTRIM('') | RTRIM_ORACLE('') |
    +-----------+------------------+
    |           | NULL             |
    +-----------+------------------+

    最初に、システムをデフォルトモードに設定し(おそらくすでにデフォルトモードになっている場合でも)、次に両方の関数を空の文字列で実行しました。

    RTRIM()であることがわかります RTRIM_ORACLE()が空の文字列を返しますが、 nullを返します 。

    Oracleモード

    次に、Oracleモードに設定して、コードを再度実行します。

    SET SQL_MODE=ORACLE;
    SELECT
        RTRIM(''),
        RTRIM_ORACLE('');

    結果:

    +-----------+------------------+
    | RTRIM('') | RTRIM_ORACLE('') |
    +-----------+------------------+
    | NULL      | NULL             |
    +-----------+------------------+

    RTRIM()であることがわかります RTRIM_ORACLE()のように動作するようになりました 。

    したがって、RTRIM()を使用します 、OracleバージョンのRTRIM()のように動作させる前に、明示的にOracleモードに切り替える必要があります。 。

    RTRIM_ORACLE() 一方、すべてのモードで使用できるため、Oracleモードに切り替える必要がありません。


    1. Django ORMのクエリによってグループ化された注釈付きフィールドの合計の最大値を計算しますか?

    2. スケーリングしないUIデザインパターン

    3. SQL ServerでのPI()の例

    4. OracleORA-00979-GROUPBY式ではありません