MID( 文字列, 開始位置 ) MID( 文字列, 開始位置, 文字数 ) MID( 文字列 FROM 開始位置 ) MID( 文字列 FROM 開始位置 FOR 文字数 )
MID関数を使用することで、開始位置を指定して指定した文字数だけ文字列を取り出すことができます。
開始位置は一文字目が1となります。
文字数を指定しない場合は、開始位置以降のすべての文字列を取り出します。
mysql> SELECT MID( 'MySQL関数リファレンス', 6 ); +-----------------------------------+ | MID( 'MySQL関数リファレンス', 6 ) | +-----------------------------------+ | 関数リファレンス | +-----------------------------------+ 1 row in set (0.00 sec) mysql> SELECT MID( 'MySQL関数リファレンス' FROM 6 ); +---------------------------------------+ | MID( 'MySQL関数リファレンス' FROM 6 ) | +---------------------------------------+ | 関数リファレンス | +---------------------------------------+ 1 row in set (0.00 sec)
mysql> SELECT MID( 'MySQL関数リファレンス', 6, 2 ); +--------------------------------------+ | MID( 'MySQL関数リファレンス', 6, 2 ) | +--------------------------------------+ | 関数 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT MID( 'MySQL関数リファレンス' FROM 6 FOR 2 ); +---------------------------------------------+ | MID( 'MySQL関数リファレンス' FROM 6 FOR 2 ) | +---------------------------------------------+ | 関数 | +---------------------------------------------+ 1 row in set (0.00 sec)
開始位置が文字列の長さより大きい場合、長さ0の空文字が返されます。
mysql> SELECT MID( 'MySQL', 100, 2 ); +------------------------+ | MID( 'MySQL', 100, 2 ) | +------------------------+ | | +------------------------+ 1 row in set (0.00 sec) mysql> SELECT CHAR_LENGTH( MID( 'MySQL', 100, 2 ) ); +---------------------------------------+ | CHAR_LENGTH( MID( 'MySQL', 100, 2 ) ) | +---------------------------------------+ | 0 | +---------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT MID( 'MySQL' FROM 100 FOR 2 ); +-------------------------------+ | MID( 'MySQL' FROM 100 FOR 2 ) | +-------------------------------+ | | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CHAR_LENGTH( MID( 'MySQL' FROM 100 FOR 2 ) ); +----------------------------------------------+ | CHAR_LENGTH( MID( 'MySQL' FROM 100 FOR 2 ) ) | +----------------------------------------------+ | 0 | +----------------------------------------------+ 1 row in set (0.00 sec)
開始位置に0以下を指定した場合は、長さ0の空文字が返されされます。
mysql> SELECT MID( 'MySQL', 0, 2 ); +----------------------+ | MID( 'MySQL', 0, 2 ) | +----------------------+ | | +----------------------+ 1 row in set (0.00 sec) mysql> SELECT CHAR_LENGTH( MID( 'MySQL', 0, 2 ) ); +-------------------------------------+ | CHAR_LENGTH( MID( 'MySQL', 0, 2 ) ) | +-------------------------------------+ | 0 | +-------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT MID( 'MySQL' FROM 0 FOR 2 ); +-----------------------------+ | MID( 'MySQL' FROM 0 FOR 2 ) | +-----------------------------+ | | +-----------------------------+ 1 row in set (0.00 sec) mysql> SELECT CHAR_LENGTH( MID( 'MySQL' FROM 0 FOR 2 ) ); +--------------------------------------------+ | CHAR_LENGTH( MID( 'MySQL' FROM 0 FOR 2 ) ) | +--------------------------------------------+ | 0 | +--------------------------------------------+ 1 row in set (0.00 sec)
文字列の左端から文字列を取り出す場合はLEFT関数が使用できます。
文字列の左端から文字列を取り出す場合はRIGHT関数が使用できます。
また同じ動作をする関数にSUBSTRING関数があります。