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

MariaDBでのTRIM()のしくみ

    MariaDBでは、 TRIM() は、文字列の先頭または末尾から文字を削除する組み込みの文字列関数です。

    デフォルトでは、先頭と末尾のスペースが削除されますが、削除する文字と、削除する側を指定できます。

    構文

    TRIM() 関数は次のように使用できます:

    TRIM([remstr FROM] str)

    または:

    TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

    str 末尾のスペースを削除する文字列であり、 remstr 削除する文字列です。

    remstrの場合 が提供されていない場合は、 TRIM() スペースを削除します。

    基本的な例は次のとおりです。

    SELECT 
        '   Caribbean Island   ' AS "Untrimmed",
        TRIM('   Caribbean Island   ') AS "Trimmed";

    結果:

    +------------------------+------------------+
    | Untrimmed              | Trimmed          |
    +------------------------+------------------+
    |    Caribbean Island    | Caribbean Island |
    +------------------------+------------------+

    この例では、最も基本的な構文を使用しています。私たちがしたのは、トリミングする文字列を提供することだけでした。トリミングする文字を指定しなかったため、すべてのスペースが文字列の両側からトリミングされました。

    文字列内のスペースがそのまま残っていることもわかります。

    両方 引数

    デフォルトでは、 TRIM() 文字列の両側をトリミングします。ただし、 BOTHを明示的に指定することはできます 必要に応じて:

    SELECT 
        '   Caribbean Island   ' AS "Untrimmed",
        TRIM(BOTH FROM '   Caribbean Island   ') AS "Trimmed";

    結果:

    +------------------------+------------------+
    | Untrimmed              | Trimmed          |
    +------------------------+------------------+
    |    Caribbean Island    | Caribbean Island |
    +------------------------+------------------+

    前の例と同じ結果が得られます。

    LEADING 引数

    LEADINGを指定する トリム操作を文字列の先頭のみに制限します:

    SELECT 
        '   Caribbean Island   ' AS "Untrimmed",
        TRIM(LEADING FROM '   Caribbean Island   ') AS "Trimmed";

    結果:

    +------------------------+---------------------+
    | Untrimmed              | Trimmed             |
    +------------------------+---------------------+
    |    Caribbean Island    | Caribbean Island    |
    +------------------------+---------------------+

    トリミングされた文字列の右側にまだスペースが存在することがわかります。左側の部分だけがトリミングされました。

    TRAILING 引数

    TRAILINGの指定 トリム操作を文字列の先頭のみに制限します:

    SELECT 
        '   Caribbean Island   ' AS "Untrimmed",
        TRIM(TRAILING FROM '   Caribbean Island   ') AS "Trimmed";

    結果:

    +------------------------+---------------------+
    | Untrimmed              | Trimmed             |
    +------------------------+---------------------+
    |    Caribbean Island    | Caribbean Island    |
    +------------------------+---------------------+

    今回は、右の部分だけをトリミングしました。トリミングされた文字列の左側にはまだスペースがあります。

    トリミングする文字列を指定する

    トリミングする文字を指定する例を次に示します。

    SELECT 
        '...mountain...' AS "Untrimmed",
        TRIM('.' FROM '...mountain...') AS "Trimmed";

    結果:

    +----------------+----------+
    | Untrimmed      | Trimmed  |
    +----------------+----------+
    | ...mountain... | mountain |
    +----------------+----------+

    単一の文字である必要はありません。トリミングする任意の文字列を指定できます:

    SELECT 
        TRIM('.' FROM '.+.mountain.+.') AS "1",
        TRIM('.+' FROM '.+.mountain.+.') AS "2",
        TRIM('+.' FROM '.+.mountain.+.') AS "3",
        TRIM('.+.' FROM '.+.mountain.+.') AS "4";

    結果:

    +--------------+--------------+--------------+----------+
    | 1            | 2            | 3            | 4        |
    +--------------+--------------+--------------+----------+
    | +.mountain.+ | .mountain.+. | .+.mountain. | mountain |
    +--------------+--------------+--------------+----------+

    必要に応じて、単語の一部をトリミングすることもできます。

    SELECT TRIM('moun' FROM 'mountain');

    結果:

    +------------------------------+
    | TRIM('moun' FROM 'mountain') |
    +------------------------------+
    | tain                         |
    +------------------------------+

    BOTHも使用できます 、 LEADING およびTRAILING トリミングする文字列を指定するときの引数。

    例:

    SELECT 
        TRIM(BOTH '.' FROM '...mountain...') AS "Both",
        TRIM(LEADING '.' FROM '...mountain...') AS "Leading",
        TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";

    結果:

    +----------+-------------+-------------+
    | Both     | Leading     | Trailaing   |
    +----------+-------------+-------------+
    | mountain | mountain... | ...mountain |
    +----------+-------------+-------------+

    ヌル引数

    nullが与えられた場合 引数の場合、結果は nullになります :

    SELECT TRIM(null);

    結果:

    +------------+
    | TRIM(null) |
    +------------+
    | NULL       |
    +------------+

    Oracleモード

    でない場合 Oracleモードで実行している場合、結果が空の場合(つまり、長さがゼロの場合)、結果は空の文字列になります。

    ただし、Oracleモードで実行すると、結果は nullになります。 。

    ここではデフォルトモードになっています(つまり、 Oracleモードの場合):

    SELECT TRIM('');

    結果:

    +----------+
    | TRIM('') |
    +----------+
    |          |
    +----------+

    それでは、Oracleモードに切り替えましょう:

    SET SQL_MODE=ORACLE;

    そして、コードを再度実行します:

    SELECT TRIM('');

    結果:

    +----------+
    | TRIM('') |
    +----------+
    | NULL     |
    +----------+

    これを行う別の方法もあります。 Oracleモードに切り替える代わりに、 TRIM_ORACLE()を使用できます。 関数名として。

    デフォルトモードに戻しましょう:

    SET SQL_MODE=DEFAULT;

    そして、 TRIM_ORACLE()を実行します :

    SELECT TRIM_ORACLE('');

    結果:

    +-----------------+
    | TRIM_ORACLE('') |
    +-----------------+
    | NULL            |
    +-----------------+

    引数がありません

    TRIM()の呼び出し 引数がないとエラーになります:

    SELECT TRIM();

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

    1. Asind()がPostgreSQLでどのように機能するか

    2. Postgres-致命的:データベースファイルはサーバーと互換性がありません

    3. カンマ区切りの値を区切り、SQLサーバーのテーブルに保存します

    4. MariaDBでのUTC_TIME()のしくみ