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

MariaDBでのMID()のしくみ

    MariaDBでは、MID() SUBSTRING()の同義語です 。指定された文字列から部分文字列を返します。

    MariaDBのドキュメントによると、これはSUBSTRING(str,pos,len)の同義語です。 SUBSTRING()の構文 ただし、私のテストでは、さまざまな形式のすべてで機能することが示されています。

    構文

    MariaDBのドキュメントによると、構文は次のようになります。

    MID(str,pos,len)

    ただし、次のフォーム(SUBSTRING()と同じフォーム)で機能することがわかりました。 サポート):

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

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

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

    SELECT MID('Drink your beer', 7);

    結果:

    +---------------------------+
    | MID('Drink your beer', 7) |
    +---------------------------+
    | your beer                 |
    +---------------------------+

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

    SELECT MID('Drink your beer' FROM 7);

    結果:

    +-------------------------------+
    | MID('Drink your beer' FROM 7) |
    +-------------------------------+
    | your beer                     |
    +-------------------------------+

    部分文字列の長さ

    抽出する部分文字列の長さを指定する例を次に示します。これは、MariaDBのドキュメントがMID()について引用している唯一の構文です。 機能。

    SELECT MID('Drink your beer', 7, 4);

    結果:

    +------------------------------+
    | MID('Drink your beer', 7, 4) |
    +------------------------------+
    | your                         |
    +------------------------------+

    そしてここではFROM...FORを使用しています 構文:

    SELECT MID('Drink your beer' FROM 7 FOR 4);

    結果:

    +-------------------------------------+
    | MID('Drink your beer' FROM 7 FOR 4) |
    +-------------------------------------+
    | your                                |
    +-------------------------------------+

    ネガティブポジション

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

    SELECT MID('Drink your beer', -9);

    結果:

    +----------------------------+
    | MID('Drink your beer', -9) |
    +----------------------------+
    | your beer                  |
    +----------------------------+

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

    SELECT MID('Drink your beer' FROM -9 FOR 4);

    結果:

    +--------------------------------------+
    | MID('Drink your beer' FROM -9 FOR 4) |
    +--------------------------------------+
    | your                                 |
    +--------------------------------------+

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

    Oracleモード

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

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

    例:

    SET SQL_MODE=ORACLE;
    SELECT 
        MID('Drink your beer', 0) AS "0",
        MID('Drink your beer', 1) AS "1";

    結果:

    +-----------------+-----------------+
    | 0               | 1               |
    +-----------------+-----------------+
    | Drink your beer | Drink your beer |
    +-----------------+-----------------+

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

    SET SQL_MODE=DEFAULT;
    SELECT 
        MID('Drink your beer', 0) AS "0",
        MID('Drink your beer', 1) AS "1";

    結果:

    +------+-----------------+
    | 0    | 1               |
    +------+-----------------+
    |      | Drink your beer |
    +------+-----------------+

    ヌル引数

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

    SELECT 
        MID(null, 3, 3),
        MID('Beer', null, 3),
        MID('Beer', 3, null),
        MID(null, null, null);

    結果:

    +-----------------+----------------------+----------------------+-----------------------+
    | MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
    +-----------------+----------------------+----------------------+-----------------------+
    | NULL            | NULL                 | NULL                 | NULL                  |
    +-----------------+----------------------+----------------------+-----------------------+

    引数がありません

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

    SELECT MID();

    結果:

    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. mysql全文検索の失敗

    2. SQLServerの条件付きWHERE句

    3. Neo4j-Cypherを使用して関係を作成する

    4. ETLプロセスでのPythonとMySQLの使用:PythonとSQLAlchemyの使用