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番目の引数を提供します。この引数を使用すると、検索の開始位置を指定できます。つまり、文字列全体の最初の出現に限定されません。