MySQLには、文字列内の部分文字列の位置を返すいくつかの文字列関数があります。具体的には、文字列内の最初の出現位置(または特定の開始点の後の最初の出現位置)を返します。
私が参照している機能は次のとおりです。
-
INSTR()
-
LOCATE()
-
POSITION()
以下はそれぞれの概要です。
INSTR()
INSTR()
関数は、文字列内で最初に出現する部分文字列を返します。
構文は次のとおりです。
INSTR(str,substr)
str
検索する文字列であり、substr
は検索している部分文字列です。
例
SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;
結果:
+--------+ | Result | +--------+ | 10 | +--------+
この場合、文字列dogs
位置10から開始します。
サブストリングが見つからない場合、0
の結果 返されます:
SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;
結果:
+--------+ | Result | +--------+ | 0 | +--------+
LOCATE()
LOCATE()
関数は、いくつかの違いを除いて、同様に機能します。引数の順序は異なり、検索を開始する場所を示すオプションの3番目のパラメーターを指定できます。
したがって、次のいずれかの方法で使用できます。
LOCATE(substr,str) LOCATE(substr,str,pos)
最初の構文は、INTSR()
と同じです。 str
を除く構文 およびsubstr
交換されます。
2番目の構文は、オプションのpos
を追加します 引数。検索を開始する位置を指定できます。
最初の構文の例
最初の構文を使用した例を次に示します。
SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;
結果:
+--------+ | Result | +--------+ | 10 | +--------+
2番目の構文の例
検索を開始する開始位置を指定する例を次に示します。
SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;
結果:
+--------+ | Result | +--------+ | 7 | +--------+
文字列cat
がわかります 位置1にありますが、6
を指定しました 開始位置として。したがって、その文字列が次に出現する位置は、返された位置でした。
INSTR()
と同様 関数、部分文字列が見つからない場合は、0
返されます。
POSITION()
POSITION()
関数はLOCATE()
の同義語です 、ただし構文は少し異なります。
構文は次のとおりです。
POSITION(substr IN str)
これは次の同義語です:
LOCATE(substr,str)
したがって、前の例の1つを次のように書き直すことができます。
SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;
結果:
+--------+ | Result | +--------+ | 10 | +--------+