メインコンテンツまでスキップ
に最終更新

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 から文字列の末尾までのすべての文字を返します

例​

  1. 基本的な使い方(開始位置を指定)
SELECT substring('abc1', 2);
+-----------------------------+
| substring('abc1', 2) |
+-----------------------------+
| bc1 |
+-----------------------------+
  1. 負の位置を指定
SELECT substring('abc1', -2);
+-----------------------------+
| substring('abc1', -2) |
+-----------------------------+
| c1 |
+-----------------------------+
  1. 位置が 0 の場合
SELECT substring('abc1', 0);
+----------------------+
| substring('abc1', 0) |
+----------------------+
| |
+----------------------+
  1. 位置が文字列の長さを超える場合
SELECT substring('abc1', 5);
+-----------------------------+
| substring('abc1', 5) |
+-----------------------------+
| |
+-----------------------------+
  1. 長さを指定
SELECT substring('abc1def', 2, 2);
+-----------------------------+
| substring('abc1def', 2, 2) |
+-----------------------------+
| bc |
+-----------------------------+
  1. FROM と FOR を使用
SELECT substring('foobarbar' FROM 4 FOR 3);
+-------------------------------------+
| substring('foobarbar' FROM 4 FOR 3) |
+-------------------------------------+
| bar |
+-------------------------------------+
  1. FROM を使用
SELECT substring('foobarbar' FROM 4);
+-------------------------------+
| substring('foobarbar' FROM 4) |
+-------------------------------+
| barbar |
+-------------------------------+
  1. 別名 MID を使用した NULL の例
SELECT MID(NULL, 2);
+--------------+
| MID(NULL, 2) |
+--------------+
| NULL |
+--------------+
  1. 別名 SUBSTR を使用
SELECT SUBSTR('Hello World', 7, 5);
+------------------------------+
| SUBSTR('Hello World', 7, 5) |
+------------------------------+
| World |
+------------------------------+
  1. UTF-8 のマルチバイト文字
SELECT SUBSTRING('ṭṛì ḍḍumai hello', 5, 6);
+--------------------------------------+
| SUBSTRING('ṭṛì ḍḍumai hello', 5, 6) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
  1. 抽出元が空文字列の場合
SELECT substring('', 1, 3);
+---------------------+
| substring('', 1, 3) |
+---------------------+
| |
+---------------------+
  1. substring に直接 NULL を渡す場合(別名 MID の例は 8 を参照)
SELECT substring(NULL, 1, 3);
+-----------------------+
| substring(NULL, 1, 3) |
+-----------------------+
| NULL |
+-----------------------+

キーワード​

SUBSTRING, SUBSTR, MID