に最終更新
SUBSTRING
説明
SUBSTRING 関数は、文字列から部分文字列を抽出します。開始位置と長さを指定でき、文字列の先頭側または末尾側から位置を数えて抽出できます。文字列の最初の文字の位置は 1 です。
別名
SUBSTR
MID
構文
SUBSTRING(<str>, <pos> [, <len>])
SUBSTRING(<str> FROM <pos> [FOR <len>])
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 抽出元の文字列。型: VARCHAR |
<pos> | 抽出を開始する位置。負の値も指定できます。型: INT |
<len> | 省略可能。抽出する長さ。型: INT |
戻り値
抽出した部分文字列を表す VARCHAR 型の値を返します。
特殊なケース:
- いずれかの引数が NULL の場合は、NULL を返します
- pos が 0 の場合は、空文字列を返します
- pos が負の場合は、文字列の末尾から逆方向に位置を数えます
- pos が文字列の長さを超える場合は、空文字列を返します
- len を指定しない場合は、pos から文字列の末尾までのすべての文字を返します
例
- 基本的な使い方(開始位置を指定)
SELECT substring('abc1', 2);
+-----------------------------+
| substring('abc1', 2) |
+-----------------------------+
| bc1 |
+-----------------------------+
- 負の位置を指定
SELECT substring('abc1', -2);
+-----------------------------+
| substring('abc1', -2) |
+-----------------------------+
| c1 |
+-----------------------------+
- 位置が 0 の場合
SELECT substring('abc1', 0);
+----------------------+
| substring('abc1', 0) |
+----------------------+
| |
+----------------------+
- 位置が文字列の長さを超える場合
SELECT substring('abc1', 5);
+-----------------------------+
| substring('abc1', 5) |
+-----------------------------+
| |
+-----------------------------+
- 長さを指定
SELECT substring('abc1def', 2, 2);
+-----------------------------+
| substring('abc1def', 2, 2) |
+-----------------------------+
| bc |
+-----------------------------+
- FROM と FOR を使用
SELECT substring('foobarbar' FROM 4 FOR 3);
+-------------------------------------+
| substring('foobarbar' FROM 4 FOR 3) |
+-------------------------------------+
| bar |
+-------------------------------------+
- FROM を使用
SELECT substring('foobarbar' FROM 4);
+-------------------------------+
| substring('foobarbar' FROM 4) |
+-------------------------------+
| barbar |
+-------------------------------+
- 別名 MID を使用した NULL の例
SELECT MID(NULL, 2);
+--------------+
| MID(NULL, 2) |
+--------------+
| NULL |
+--------------+
- 別名 SUBSTR を使用
SELECT SUBSTR('Hello World', 7, 5);
+------------------------------+
| SUBSTR('Hello World', 7, 5) |
+------------------------------+
| World |
+------------------------------+
- UTF-8 のマルチバイト文字
SELECT SUBSTRING('ṭṛì ḍḍumai hello', 5, 6);
+--------------------------------------+
| SUBSTRING('ṭṛì ḍḍumai hello', 5, 6) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
- 抽出元が空文字列の場合
SELECT substring('', 1, 3);
+---------------------+
| substring('', 1, 3) |
+---------------------+
| |
+---------------------+
substringに直接 NULL を渡す場合(別名MIDの例は 8 を参照)
SELECT substring(NULL, 1, 3);
+-----------------------+
| substring(NULL, 1, 3) |
+-----------------------+
| NULL |
+-----------------------+
キーワード
SUBSTRING, SUBSTR, MID