メインコンテンツまでスキップ
バージョン: 26.x

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を返す

  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 |
+-------------------------+-------------------------+