我继承了一个带有item_names表的数据库。
item_names中的文本具有非标准文本,因此使用getStandardizedName PL / SQL函数创建名称的版本。该版本用于搜索目的(针对最终用户输入的搜索调用相同的函数)。
在这个函数中有很多东西,比如下面的代码。我的问题是,有没有更好的方法来做到这一点?每百万件物品大约需要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, '.','');
答案 0 :(得分:0)
如果您可以识别常见的模式/分组,则应该可以使用几个regexp_replace来调用它们。您已在评论中找到标点符号示例。
l_name := regexp_replace(l_name, '([[:punct:]])', ' ')
SAINT对可以替换为:
l_name := regexp_replace(l_name, 'ST[E]{0,1}-', 'SAINT ')