MariaDBにはINSTR()
があります 関数とLOCATE()
働き。どちらの関数もまったく同じことをしているように見えます–文字列内の部分文字列の位置を返します。
ただし、違いがあります。
違い
これらの2つの関数の違いは、それらの構文といくつかの例を見るとわかります。
構文
INSTR()
の構文 :
INSTR(str,substr)
LOCATE()
で受け入れられる2つの構文 :
LOCATE(substr,str)
LOCATE(substr,str,pos)
str
文字列、substr
は検索する部分文字列であり、pos
検索を開始する位置です。
2つの機能の違いは、次のように要約できます。
-
LOCATE()
関数は、INSTR()
と同じ2つの引数を受け入れます 受け入れますが、順序が逆になります。
-
LOCATE()
関数は、オプションの3番目の引数を受け入れて、検索の開始位置を指定します。INSTR()
関数はそのような引数を受け入れません。
したがって、LOCATE()
INSTR()
という追加機能を提供します 提供しません。
例1-最初の違い
2つの関数が引数を受け入れる逆の順序を示す例を次に示します。
SELECT
INSTR('Disconnect', 'con'),
LOCATE('con', 'Disconnect');
結果:
+----------------------------+-----------------------------+ | INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') | +----------------------------+-----------------------------+ | 4 | 4 | +----------------------------+-----------------------------+
例2–2番目の違い
LOCATE()
の追加機能を示す例を次に示します。 INSTR()
を介して提供します :
SELECT
INSTR('My cat is a good cat', 'cat') AS "INSTR()",
LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";
結果:
+---------+----------+----------------------------+ | INSTR() | LOCATE() | LOCATE() with 3rd Argument | +---------+----------+----------------------------+ | 4 | 4 | 18 | +---------+----------+----------------------------+
この例は、LOCATE()
が 関数は、オプションの3番目の引数を提供します。この引数を使用すると、検索の開始位置を指定できます。つまり、文字列全体の最初の出現に限定されません。