MariaDBでは、LOCATE() は、別の文字列内で最初に出現する部分文字列の位置を返す組み込みの文字列関数です。
LOCATE() INSTR()に似ています 関数、ただしLOCATE() 検索の開始位置を指定するオプションを提供します。また、これら2つの関数の間では、引数の順序が逆になっています。
構文
LOCATE() 関数は、2つの引数の構文と3つの引数の構文をサポートします。
2つの引数の構文:
LOCATE(substr,str) 3つの引数の構文:
LOCATE(substr,str,pos)
str 文字列、substr は検索する部分文字列であり、pos 検索を開始する位置です。
例
基本的な例は次のとおりです。
SELECT LOCATE('hot', 'The hot sun'); 結果:
+------------------------------+
| LOCATE('hot', 'The hot sun') |
+------------------------------+
| 5 |
+------------------------------+ 開始位置
検索の開始位置を指定する例を次に示します。
SELECT LOCATE('hot', 'The hot sun is really hot', 8); 結果:
+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 8) |
+------------------------------------------------+
| 23 |
+------------------------------------------------+ 大文字と小文字の区別
LOCATE() 大文字と小文字を区別しない検索を実行します:
SELECT LOCATE('HOT', 'The hot sun'); 結果:
+------------------------------+
| LOCATE('HOT', 'The hot sun') |
+------------------------------+
| 5 |
+------------------------------+ 複数回発生
サブストリングが複数回出現する場合は、最初のサブストリングの位置(開始位置から)のみが返されます:
SELECT LOCATE('hot', 'The hot sun is really hot'); 結果:
+--------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot') |
+--------------------------------------------+
| 5 |
+--------------------------------------------+ ここに開始位置があります:
SELECT LOCATE('hot', 'The hot sun is really hot', 20); 結果:
+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 20) |
+------------------------------------------------+
| 23 |
+------------------------------------------------+ パーシャルマッチ
部分文字列がより大きな単語の一部である場合でも、一致します:
SELECT LOCATE('hot', 'The hottest sun'); 結果:
+----------------------------------+
| LOCATE('hot', 'The hottest sun') |
+----------------------------------+
| 5 |
+----------------------------------+ ただし、文字列が部分文字列の一部にすぎない場合は、一致しません:
SELECT LOCATE('hottest', 'The hot sun'); 結果:
+----------------------------------+
| LOCATE('hottest', 'The hot sun') |
+----------------------------------+
| 0 |
+----------------------------------+ スペース
スペース文字は引き続き文字列であるため、それが唯一の文字であっても、サブ文字列にスペースを含めることができます:
SELECT LOCATE('', 'The hot sun'); 結果:
+----------------------------+
| LOCATE(' ', 'The hot sun') |
+----------------------------+
| 4 |
+----------------------------+ 空の文字列
サブ文字列が空の文字列の場合は次のようになります。
SELECT LOCATE('', 'The hot sun'); 結果:
+---------------------------+
| LOCATE('', 'The hot sun') |
+---------------------------+
| 1 |
+---------------------------+ 一致なし
文字列に部分文字列が見つからない場合は、LOCATE() 0を返します :
SELECT LOCATE('cold', 'The hot sun'); 結果:
+-------------------------------+
| LOCATE('cold', 'The hot sun') |
+-------------------------------+
| 0 |
+-------------------------------+ ヌル引数
nullを提供する いずれの引数についても、結果はnullになります。 :
SELECT
LOCATE(null, 'The hot sun'),
LOCATE('hot', null); 結果:
+-----------------------------+---------------------+
| LOCATE(null, 'The hot sun') | LOCATE('hot', null) |
+-----------------------------+---------------------+
| NULL | NULL |
+-----------------------------+---------------------+ 間違った数の引数を指定する
LOCATE()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT LOCATE('hot'); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOCATE'