【发布时间】:2012-08-21 19:26:24
【问题描述】:
我继承了一个带有 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, '.','');
【问题讨论】:
-
找到了标点符号的部分解法如下:l_name := REGEXP_REPLACE(l_name, '([[:punct:]])', ' ')