MySQLでは、POSITION()
関数は、文字列内で最初に出現する部分文字列の位置を返します。
この関数は、実際にはLOCATE()
の同義語です。 、ただし構文は少し異なります。 LOCATE()
関数には、検索の開始位置を定義できるという追加の機能もあります。
構文
基本的な構文は次のようになります:
POSITION(substr IN str)
substr
部分文字列であり、str
文字列です。
例1-基本的な使用法
SELECT POSITION('Cat' IN 'The Cat') Result;
結果:
+--------+ | Result | +--------+ | 5 | +--------+
例2–大文字と小文字の区別
POSITION()
関数はマルチバイトセーフであり、少なくとも1つの引数がバイナリ文字列である場合にのみ大文字と小文字が区別されます。
したがって、次の例では大文字と小文字が区別されません。
SELECT POSITION('Cat' IN 'The cat') Result;
結果:
+--------+ | Result | +--------+ | 5 | +--------+
例3–一致なし
この関数は0
を返します 文字列内に部分文字列が見つからない場合:
SELECT POSITION('Dog' IN 'The cat') Result;
結果:
+--------+ | Result | +--------+ | 0 | +--------+
例4–埋め込まれた部分文字列
部分文字列を選択するときは注意してください。別の単語の一部である場合、誤検知が発生する可能性があります:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
結果:
+--------+ | Result | +--------+ | 6 | +--------+
猫だけを探している場合 、動物、これは誤検知になります。
例5–最初の発生のみ
この関数は最初のの位置のみを返すことを忘れないでください 部分文字列の出現。それ以降の発生は無視されます:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
結果:
+--------+ | Result | +--------+ | 4 | +--------+
例6–NULL引数
引数のいずれかがNULL
の場合 、結果はNULL
です :
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
結果:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
前述のように、LOCATE()
を使用することもできます 関数。検索の開始位置を定義できます。