1

item_names のテーブルを持つデータベースを継承しました。

item_names のテキストには非標準テキストが含まれているため、 getStandardizedName PL/SQL 関数を使用して名前のバージョンが作成されます。そのバージョンは検索目的で使用されます (エンド ユーザーが入力した検索に対して同じ関数が呼び出されます)。

この関数内には、以下のコードのようなものがたくさんあります。私の質問は、これを行うためのより良い方法はありませんか? これには、100 万アイテムごとに約 90 分かかります。残念ながら、現在のワークフローでは、これを週に 5 ~ 6 回行う必要があります。

次のタイプの 'REPLACE' は 80 以上あることに注意してください。

   l_name := REPLACE(l_name, 'STE-', ' SAINT ');
   l_name := REPLACE(l_name, 'ST-', ' SAINT ');

   l_name := replace(l_name, '+','');
   l_name := replace(l_name, '-','');

   l_name := replace(l_name, '=','');
   l_name := replace(l_name, '_','');
   l_name := replace(l_name, '.','');
4

1 に答える 1

0

一般的なパターン/グループを特定できれば、それらすべてをいくつかのregexp_replace呼び出しで置き換えることができるはずです。コメントで句読点の例をすでに特定しています。

l_name := regexp_replace(l_name, '([[:punct:]])', ' ')

SAINT ペアは次のものに置き換えることができます。

l_name := regexp_replace(l_name, 'ST[E]{0,1}-', 'SAINT ')
于 2012-08-21T21:45:27.197 に答える