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

MariaDBでのSUBSTRING()のしくみ

    MariaDBでは、SUBSTRING() は、指定された文字列からサブ文字列を返す組み込みの文字列関数です。

    SUBSTRING() 少なくとも2つの引数が必要です。文字列、およびサブ文字列を抽出する位置。また、サブストリングの長さを指定できるオプションの3番目の引数も受け入れます。

    構文

    構文は次の形式を取ります:

    SUBSTRING(str,pos), 
    SUBSTRING(str FROM pos), 
    SUBSTRING(str,pos,len),
    SUBSTRING(str FROM pos FOR len)

    str 文字列、pos は部分文字列の開始位置であり、len 抽出する文字数です。

    FROMを使用する2つのフォーム キーワードは標準のSQL構文です。

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

    SELECT SUBSTRING('Big fat cat', 5);

    結果:

    +-----------------------------+
    | SUBSTRING('Big fat cat', 5) |
    +-----------------------------+
    | fat cat                     |
    +-----------------------------+

    これは同じ例ですが、標準のSQL構文を使用しています:

    SELECT SUBSTRING('Big fat cat' FROM 5);

    結果:

    +---------------------------------+
    | SUBSTRING('Big fat cat' FROM 5) |
    +---------------------------------+
    | fat cat                         |
    +---------------------------------+

    部分文字列の長さ

    抽出する部分文字列の長さを指定する例を次に示します。

    SELECT SUBSTRING('Big fat cat', 5, 3);

    結果:

    +--------------------------------+
    | SUBSTRING('Big fat cat', 5, 3) |
    +--------------------------------+
    | fat                            |
    +--------------------------------+

    そして、ここでは標準のSQL構文を使用しています:

    SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

    結果:

    +---------------------------------------+
    | SUBSTRING('Big fat cat' FROM 5 FOR 3) |
    +---------------------------------------+
    | fat                                   |
    +---------------------------------------+

    ネガティブポジション

    位置に負の値を指定すると、開始位置が文字列の末尾から逆方向にカウントされます。

    SELECT SUBSTRING('Big fat cat', -3);

    結果:

    +------------------------------+
    | SUBSTRING('Big fat cat', -3) |
    +------------------------------+
    | cat                          |
    +------------------------------+

    標準のSQL構文を使用する場合は、負の位置も使用できます。

    SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

    結果:

    +----------------------------------------+
    | SUBSTRING('Big fat cat' FROM -7 FOR 3) |
    +----------------------------------------+
    | fat                                    |
    +----------------------------------------+

    この場合、部分文字列の長さも設定します。

    Oracleモード

    Oracleモードの場合、開始位置は0 (ゼロ)は1として扱われます 。ただし、開始位置は1 1としても扱われます 。

    これは、0である他のモードとは対照的です。 空の文字列を返します。

    例:

    SET SQL_MODE=ORACLE;
    SELECT 
        SUBSTRING('Big fat cat', 0) AS "0",
        SUBSTRING('Big fat cat', 1) AS "1";

    結果:

    +-------------+-------------+
    | 0           | 1           |
    +-------------+-------------+
    | Big fat cat | Big fat cat |
    +-------------+-------------+

    ここではデフォルトモードになっています:

    SET SQL_MODE=DEFAULT;
    SELECT 
        SUBSTRING('Big fat cat', 0) AS "0",
        SUBSTRING('Big fat cat', 1) AS "1";

    結果:

    +------+-------------+
    | 0    | 1           |
    +------+-------------+
    |      | Big fat cat |
    +------+-------------+

    ヌル引数

    引数のいずれか(またはすべて)がnullの場合 、SUBSTRING() 関数はnullを返します :

    SELECT 
        SUBSTRING(null, 3, 3),
        SUBSTRING('Coffee', null, 3),
        SUBSTRING('Coffee', 3, null),
        SUBSTRING(null, null, null);

    結果:

    +-----------------------+------------------------------+------------------------------+-----------------------------+
    | SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
    +-----------------------+------------------------------+------------------------------+-----------------------------+
    | NULL                  | NULL                         | NULL                         | NULL                        |
    +-----------------------+------------------------------+------------------------------+-----------------------------+

    引数がありません

    SUBSTRING()を呼び出す 引数を渡さないとエラーが発生します:

    SELECT SUBSTRING();

    結果:

    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. 集計関数を使用してテーブルから最大値と最小値を取得する方法-SQLServer/TSQLチュートリアルパート129

    2. 失敗したすべてのSQLステートメントをOracle10Gに記録する方法はありますか

    3. Pythondatetime.datetimeオブジェクトをMySQLに挿入する

    4. MySQLのインストール:エラー:gemネイティブ拡張のビルドに失敗しました