SUBSTRING( 文字列, 開始位置 ) SUBSTRING( 文字列, 開始位置, 文字数 ) SUBSTRING( 文字列 FROM 開始位置 ) SUBSTRING( 文字列 FROM 開始位置 FOR 文字数 )
SUBSTRING関数を使用することで、開始位置を指定して指定した文字数だけ文字列を取り出すことができます。
開始位置は一文字目が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)
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の空文字が返されます。
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の空文字が返されされます。
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関数があります。
SECOND | 時刻から秒を取り出す |
SESSION_USER | 接続時に指定されたユーザー名を確認する |
SHA | SHA1で暗号化する |
SHA1 | SHA1で暗号化する |
SIGN | 符号を調べる |
SIN | サインを求める |
SPACE | 任意の数の半角スペースを生成する |
SQRT | 平方根を求める |
SUBSTRING | 文字列から位置を指定して文字列を取り出す |
SUBSTRING_INDEX | 区切り文字列N個目までの文字列を取り出す |
SUM | 合計を求める |
SYSTEM_USER | 接続時に指定されたユーザー名を確認する |