我继承了一个带有item_names表的数据库。
SQL中的文本包含非标准文本,因此使用getStandardizedName PL/ item_names函数创建名称的一个版本。该版本用于搜索目的(针对最终用户输入的搜索调用相同的函数)。
在这个函数中有很多类似下面代码的东西。我的问题是,有没有更好的方法呢?对于每百万个项目,这大约需要90分钟。不幸的是,目前的工作流程需要每周完成5-6次。
请注意,有超过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, '.','');发布于 2012-08-22 05:45:27
如果您能够识别出常见的模式/分组,那么您应该能够将它们全部替换为几个regexp_replace调用。您已经在您的评论中标识了标点符号示例。
l_name := regexp_replace(l_name, '([[:punct:]])', ' ')l_name := regexp_replace(l_name, 'ST[E]{0,1}-', 'SAINT ')https://stackoverflow.com/questions/12061680
复制相似问题