メインコンテンツまでスキップ

特定

説明

LOCATE関数は、文字列str内で部分文字列substrが最初に出現する位置を返します(カウントは1から始まります)。オプションの第3パラメータposが指定された場合、文字列str内の指定された位置から検索を開始します。これは文字列マッチングや位置検索によく使用されるMySQL互換関数です。

構文

LOCATE(<substr>, <str> [, <pos>])

パラメータ

パラメータ説明
<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を返します

  1. 基本的な検索
SELECT LOCATE('bar', 'foobarbar'), LOCATE('xbar', 'foobar'), LOCATE('bar', 'foobarbar', 5);
+----------------------------+--------------------------+-------------------------------+
| LOCATE('bar', 'foobarbar') | LOCATE('xbar', 'foobar') | LOCATE('bar', 'foobarbar', 5) |
+----------------------------+--------------------------+-------------------------------+
| 4 | 0 | 7 |
+----------------------------+--------------------------+-------------------------------+
  1. 最初の文字を見つける
SELECT LOCATE('f', 'foobar'), LOCATE('r', 'foobar');
+-----------------------+-----------------------+
| LOCATE('f', 'foobar') | LOCATE('r', 'foobar') |
+-----------------------+-----------------------+
| 1 | 6 |
+-----------------------+-----------------------+
  1. 一致するものが見つかりません
SELECT LOCATE('xyz', 'foobar'), LOCATE('FOO', 'foobar');
+-------------------------+-------------------------+
| LOCATE('xyz', 'foobar') | LOCATE('FOO', 'foobar') |
+-------------------------+-------------------------+
| 0 | 0 |
+-------------------------+-------------------------+