以下は、私が試した方法の 1 つです (あまり効率的ではありませんが)。
select search, replace(filtered, 'butterflies', '') as filtered from (
select search, replace(filtered, 'of', '') as filtered from (
select search, replace(search, 'america', '') as filtered from table_name a
) b
) c;
このクエリは、次のようなものを提供します。
+---------------------+----------+
| search | filtered |
+---------------------+----------+
| butterflies | |
| america | |
| birds of america | birds |
| america butterflies | |
+---------------------+----------+
ただし、これを機能させるための最後の部分は、私にいくつかの問題を引き起こしました...「空」のすべての行を返す(つまり、空白文字のみを含む) where 句が必要です。
これにより、3 行目が除外され、目的の結果セットが返されます。ただし、trim() を使用してこれを機能させることができませんでした。その理由はわかりません。
たとえば、私は試しました:
where length(trim(c.filtered)) = 0;
これにより、必要な結果セットが得られませんでした。今はこれを調べる時間はもうありませんが、他の誰かが協力してパズルを解きたい場合に備えて、このアプローチについて言及したいと思います. そうでない場合は、今日か明日、もう少し詳しく調べてみます。