MySQL関数リファレンス

文字列から位置を指定して文字列を取り出す (SUBSTRING)

スポンサードリンク
書式
SUBSTRING( 文字列, 開始位置 )
SUBSTRING( 文字列, 開始位置, 文字数 )
SUBSTRING( 文字列 FROM 開始位置 )
SUBSTRING( 文字列 FROM 開始位置 FOR 文字数 )

SUBSTRING関数を使用することで、開始位置を指定して指定した文字数だけ文字列を取り出すことができます。
開始位置は一文字目が1となります。
文字数を指定しない場合は、開始位置以降のすべての文字列を取り出します。

例1(取り出す文字数を指定しない場合)
mysql> SELECT SUBSTRING( 'MySQL関数リファレンス', 6 );
+-----------------------------------------+
| SUBSTRING( 'MySQL関数リファレンス', 6 ) |
+-----------------------------------------+
| 関数リファレンス                        |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBSTRING( 'MySQL関数リファレンス' FROM 6 );
+---------------------------------------------+
| SUBSTRING( 'MySQL関数リファレンス' FROM 6 ) |
+---------------------------------------------+
| 関数リファレンス                            |
+---------------------------------------------+
1 row in set (0.00 sec)
例2(取り出す文字数を指定した場合)
mysql> SELECT SUBSTRING( 'MySQL関数リファレンス', 6, 2 );
+--------------------------------------------+
| SUBSTRING( 'MySQL関数リファレンス', 6, 2 ) |
+--------------------------------------------+
| 関数                                       |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBSTRING( 'MySQL関数リファレンス' FROM 6 FOR 2 );
+---------------------------------------------------+
| SUBSTRING( 'MySQL関数リファレンス' FROM 6 FOR 2 ) |
+---------------------------------------------------+
| 関数                                              |
+---------------------------------------------------+
1 row in set (0.00 sec)

開始位置が文字列の長さより大きい場合、長さ0の空文字が返されます。

例3(開始位置が文字列の長さより大きい場合)
mysql> SELECT SUBSTRING( 'MySQL', 100, 2 );
+------------------------------+
| SUBSTRING( 'MySQL', 100, 2 ) |
+------------------------------+
|                              |
+------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR_LENGTH( SUBSTRING( 'MySQL', 100, 2 ) );
+---------------------------------------------+
| CHAR_LENGTH( SUBSTRING( 'MySQL', 100, 2 ) ) |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBSTRING( 'MySQL' FROM 100 FOR 2 );
+-------------------------------------+
| SUBSTRING( 'MySQL' FROM 100 FOR 2 ) |
+-------------------------------------+
|                                     |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR_LENGTH( SUBSTRING( 'MySQL' FROM 100 FOR 2 ) );
+----------------------------------------------------+
| CHAR_LENGTH( SUBSTRING( 'MySQL' FROM 100 FOR 2 ) ) |
+----------------------------------------------------+
|                                                  0 |
+----------------------------------------------------+
1 row in set (0.00 sec)

開始位置に0以下を指定した場合は、長さ0の空文字が返されされます。

例4(開始位置に0以下を指定した場合)
mysql> SELECT SUBSTRING( 'MySQL', 0, 2 );
+----------------------------+
| SUBSTRING( 'MySQL', 0, 2 ) |
+----------------------------+
|                            |
+----------------------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR_LENGTH( SUBSTRING( 'MySQL', 0, 2 ) );
+-------------------------------------------+
| CHAR_LENGTH( SUBSTRING( 'MySQL', 0, 2 ) ) |
+-------------------------------------------+
|                                         0 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBSTRING( 'MySQL' FROM 0 FOR 2 );
+-----------------------------------+
| SUBSTRING( 'MySQL' FROM 0 FOR 2 ) |
+-----------------------------------+
|                                   |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR_LENGTH( SUBSTRING( 'MySQL' FROM 0 FOR 2 ) );
+--------------------------------------------------+
| CHAR_LENGTH( SUBSTRING( 'MySQL' FROM 0 FOR 2 ) ) |
+--------------------------------------------------+
|                                                0 |
+--------------------------------------------------+
1 row in set (0.00 sec)

文字列の左端から文字列を取り出す場合はLEFT関数が使用できます。
文字列の左端から文字列を取り出す場合はRIGHT関数が使用できます。
また同じ動作をする関数にMID関数があります。

スポンサードリンク
Sではじまる MySQL の関数 / 文字列を扱う関数

文字列を扱う関数

1文字目のアスキーコードを調べる (ASCII)
1文字目の文字コードを調べる (ORD)
文字コードを文字に変換する (CHAR)
文字列を結合する (CONCAT)
文字列を結合する(区切文字を間に挟む) (CONCAT_WS)
文字列のバイト数を調べる (LENGTH)
文字列の文字数を調べる (CHAR_LENGTH)
文字列のビット数を調べる (BIT_LENGTH)
特定の文字列が最初に出現する位置を調べる (LOCATE)
特定の文字列が最初に出現する位置を調べる (POSITION)
特定の文字列が最初に出現する位置を調べる (INSTR)
特定の文字を左側に追加して文字列の長さを整える (LPAD)
特定の文字を右端に追加して文字列の長さを整える (RPAD)
文字列の左側から文字列を取り出す (LEFT)
文字列の右側から文字列を取り出す (RIGHT)
文字列から位置を指定して文字列を取り出す (SUBSTRING)
文字列から位置を指定して文字列を取り出す (MID)
区切り文字列N個目までの文字列を取り出す (SUBSTRING_INDEX)
X進数をY進数へ変換する (CONV)
10進数の整数を2進数に変換する (BIN)
10進数の整数を8進数に変換する (OCT)
10進数の整数を16進数に変換する (HEX)
文字列の左側から半角スペースを削除する (LTRIM)
文字列の右側から半角スペースを削除する (RTRIM)
文字列の両側から特定の文字列を削除する (TRIM)
値をシングルクオートで囲み特殊文字をエスケープする (QUOTE)
任意の数の半角スペースを生成する (SPACE)
任意の文字列を任意の数だけ生成する (REPEAT)
文字列を反転させる (REVERSE)
アルファベット大文字を小文字に変換する (LOWER)
アルファベット大文字を小文字に変換する (LCASE)
アルファベット小文字を大文字に変換する (UPPER)
アルファベット小文字を大文字に変換する (UCASE)
スポンサードリンク

Sではじまる MySQL の関数

SECOND 時刻から秒を取り出す
SESSION_USER 接続時に指定されたユーザー名を確認する
SHA SHA1で暗号化する
SHA1 SHA1で暗号化する
SIGN 符号を調べる
SIN サインを求める
SPACE 任意の数の半角スペースを生成する
SQRT 平方根を求める
SUBSTRING 文字列から位置を指定して文字列を取り出す
SUBSTRING_INDEX 区切り文字列N個目までの文字列を取り出す
SUM 合計を求める
SYSTEM_USER 接続時に指定されたユーザー名を確認する