テキストフィールドのある MySql テーブルがあります。
テキスト フィールドには、次のようなランダムなシーケンスが入力されます (任意の整数値を指定できます):
14,4,24,20,34,2
34,67,4,98,64
文字列 (テキスト フィールド値) の先頭または末尾にコンマはありません。
たとえば、「4」だけの合計出現数をカウントしたいとします。
これら 2 つの行をクエリすると、7 ではなく 2 が返されるはずです。
このようなクエリの書き方がわかりません。
###ありがとう###P粉8074716042023-09-10 00:31:48
REGEXP_REPLACE
を使用して 4 を見つけ、文字列からそれらを削除し、長さの差を計算できます。
リーリー
リーリー
AS を使用してこれらの値の名前を変更することもできます。
(?<=^|,)4(?=$|,) は、次の条件を満たす「4」を探しています:
リーリー
まず、出現するすべての「4」をアンダースコア (__) に置き換えます (例: 54 の 4 は置き換えません)。
次に、アンダースコアを含む文字列の長さから、アンダースコアのない文字列の長さを引いた値が計算されます。これが、リスト内の「4」の数になります。
を使用するのでしょうか?
REPLACE 関数が予想とは異なる動作をすることがわかりました。この例を取り上げます:
4,4,4,4,4 では、単一の Replace が使用された場合、
_,_,_,_,__ が返されることが期待されます。ただし、カンマはその場で置き換えられ、カンマが 2 回「一致」した場合、2 回目はカウントされません。そのため、2
REPLACE(..., ",4,", ",_ , ")の理由。