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