LOCATE( 検索文字列, 検索対象文字列 ) LOCATE( 検索文字列, 検索対象文字列, 数値 )
LOCATE関数を使用することで特定の文字列が最初に出現する位置を調べることができます。
第3引数に数値を指定することで、何文字目以降を検索対象とするかを指定できます。
検索文字列が見つかった場合はその位置を、見つからなかった場合は0を返します。
mysql> SELECT LOCATE( 'SQ', 'MySQL' ); +-------------------------+ | LOCATE( 'SQ', 'MySQL' ) | +-------------------------+ | 3 | +-------------------------+ 1 row in set (0.00 sec)
mysql> SELECT LOCATE( 'わに', 'にわにわにわにわとりがいる', 5 ); +---------------------------------------------------+ | LOCATE( 'わに', 'にわにわにわにわとりがいる', 5 ) | +---------------------------------------------------+ | 6 | +---------------------------------------------------+ 1 row in set (0.00 sec)
mysql> SELECT LOCATE( 'Perl', 'Linux+Apache+MySQL+PHP' ); +--------------------------------------------+ | LOCATE( 'Perl', 'Linux+Apache+MySQL+PHP' ) | +--------------------------------------------+ | 0 | +--------------------------------------------+ 1 row in set (0.00 sec)
mysql> SELECT LOCATE( 'php', 'Linux+Apache+MySQL+PHP' ); +-------------------------------------------+ | LOCATE( 'php', 'Linux+Apache+MySQL+PHP' ) | +-------------------------------------------+ | 0 | +-------------------------------------------+ 1 row in set (0.00 sec)
同じ動作をする関数にPOSITION関数とINSTR関数がありますが、これらの関数は検索開始位置を指定することはできず、常に一文字目から検索されます。