sql动态替换

时间:2012-10-18 21:10:24

标签: sql oracle plsql

我的要求是我使用regex_like函数在表中搜索一堆列:下面是一个示例:

SELECT *
FROM dsopi_person_addr_rule ADDR
WHERE regexp_like (UPPER(addr.src_address_line1),   
                     'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')

现在,如果我找到匹配项,我想要从src_address_line1获取值并将其放在同一个表的另一列中。我知道如何做到这一点,但任何人都可以建议如何有效地做到这一点。我愿意使用游标。

2 个答案:

答案 0 :(得分:1)

你不需要光标

UPDATE dsopi_person_addr_rule ADDR
SET new_col = addr.src_address_line1
WHERE regexp_like (UPPER(addr.src_address_line1),   
                     'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')

答案 1 :(得分:-1)

我将看一下CONTAINSTABLE子句,但这需要启用/创建FULLTEXT索引。

http://msdn.microsoft.com/en-us/library/ms189760.aspx