LOCATE
説明
LOCATE関数は、文字列strの中で部分文字列substrが最初に出現する位置を返します(カウントは1から始まります)。オプションの第3パラメータposが指定された場合、検索は文字列str内の指定された位置から開始されます。これは文字列のマッチングや位置検索でよく使用されるMySQL互換の関数です。
構文
LOCATE(<substr>, <str> [, <pos>])
パラメータ
| Parameter | デスクリプション |
|---|---|
<substr> | 検索対象の部分文字列。型: VARCHAR |
<str> | 検索元の文字列。型: VARCHAR |
<pos> | オプションパラメータ、検索開始位置(1から数える)。型: INT |
戻り値
INT型を返し、strにおけるsubstrの最初の出現位置を表す(1から数える)。
検索ルール:
- 位置のカウントは1から開始(0からではない)
- 最初にマッチした位置を返す
- posが指定された場合、その位置から検索を開始するが、返される位置は依然として文字列の先頭を基準とした絶対位置
- 検索では大文字小文字を区別する
特殊ケース:
- マッチするものが見つからない場合、0を返す
- いずれかのパラメータがNULLの場合、NULLを返す
- substrが空文字列の場合、1を返す(posが指定されていてpos > 1の場合はposの値を返す)
- strが空でsubstrが空でない場合、0を返す
- posが1未満の場合、0を返す
- posがstrの長さより大きい場合、0を返す
例
- 基本的な検索
SELECT LOCATE('bar', 'foobarbar'), LOCATE('xbar', 'foobar'), LOCATE('bar', 'foobarbar', 5);
+----------------------------+--------------------------+-------------------------------+
| LOCATE('bar', 'foobarbar') | LOCATE('xbar', 'foobar') | LOCATE('bar', 'foobarbar', 5) |
+----------------------------+--------------------------+-------------------------------+
| 4 | 0 | 7 |
+----------------------------+--------------------------+-------------------------------+
- 最初の文字を見つける
SELECT LOCATE('f', 'foobar'), LOCATE('r', 'foobar');
+-----------------------+-----------------------+
| LOCATE('f', 'foobar') | LOCATE('r', 'foobar') |
+-----------------------+-----------------------+
| 1 | 6 |
+-----------------------+-----------------------+
- 一致するものが見つかりません
SELECT LOCATE('xyz', 'foobar'), LOCATE('FOO', 'foobar');
+-------------------------+-------------------------+
| LOCATE('xyz', 'foobar') | LOCATE('FOO', 'foobar') |
+-------------------------+-------------------------+
| 0 | 0 |
+-------------------------+-------------------------+