MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのLOCATE()関数で部分文字列が複数回出現する場合、どの位置が返される?

MySQLのLOCATE()関数は、指定した文字列の中に部分文字列が複数回出現する場合、最初に出現した位置を返します。それ以降の出現位置は無視される点に注意が必要です。

具体例

以下の例では、文字列「Ram is a good boy. Is Ram a good boy?」の中に部分文字列「good」が2回出現しています。

mysql> Select LOCATE('good','Ram is a good boy. Is Ram a good boy?') As Result;
+--------+
| Result |
+--------+
|     10 |
+--------+
1 row in set (0.00 sec)

結果の解説

この例では、部分文字列「good」は文字列内に2回出現しています。1回目は10番目の位置、2回目は29番目の位置です。しかし、LOCATE()関数が返すのは最初の出現位置である「10」だけです。

なお、すべての出現位置を取得したい場合は、LOCATE()関数を繰り返し呼び出し、検索開始位置を前回見つかった位置の次の文字にずらしていく方法が一般的です。

  1. Pythonで文字列内に複数回出現する長さkの部分文字列の個数をカウントする方法

    文字列 s と整数 k が与えられたとき、s の中に2回以上出現する長さ k の部分文字列がいくつあるかを求める問題を考えてみましょう。 たとえば、入力が s = xxxyyy、k = 2 の場合、出力は 2 になります。これは「xx」と「yy」という2つの部分文字列が、それぞれ複数回出現しているためです。 解決のアプローチ この問題は、以下の手順で解くことができます。 seen := 空のリストを用意する i を 0 から (s の長さ - k) まで繰り返す: t := s のインデックス i から i + k - 1 までの部分文字列 t を seen の末尾に追加する mp :

  2. Pythonの組み込み関数を使って文字列の順列を表示するプログラム

    Pythonでは、標準ライブラリitertoolsに含まれる組み込み関数 permutations(iterable) を使うことで、与えられた文字列のすべての順列(並べ替え)を簡単に取得できます。本記事では、この関数を活用して、入力された文字列の全順列を表示するプログラムを解説します。 実行例 たとえば、文字列「XYZ」が与えられた場合、出力は以下のようになります。 Input : string = XYZ Output : XYZ XZY YXZ YZX ZXY ZYX アルゴリズム 処理の流れは非常にシンプルで、次の3ステップで構成されます。 文字列を入力として受け取る。 permut