使用分隔符搜索varchar列中的每个标记

时间:2013-10-10 06:00:47

标签: regex string oracle split

我的表格中包含由;分隔的电子邮件地址的列:

TO                                              CC                                  BCC
--------------------------------------------------------------------------------------------------------------------
abc.def@xyz.com;an.yes@xyz.com;no.yes@xyz.com   anna.chris@xyz.com;DL_ABC@xyz.com   raj.alb@xyz.com;doug.amb@xyz.com

用户提供了一个电子邮件地址作为搜索条件,我必须针对每个列进行查找,以查找任何列具有目标电子邮件地址的行。

有人可以帮助我吗?

我尝试使用reg_exp,但没有太多经验。

2 个答案:

答案 0 :(得分:2)

简单方法:

SELECT * FROM emailtable
WHERE INSTR(';' || to || ';' || cc || ';' || bcc || ';'
           ,';' || :search_parameter || ';') > 0;

答案 1 :(得分:0)

根据您的要求以及我对您对Jeffery Kemp的回答的评论,我建议您尝试以下方法:

SELECT *
  FROM emailtable
 WHERE lower(REPLACE ("TO" || ';' || cc || ';' || bcc, ' ', ''))
       LIKE '%' || lower(REPLACE (:search_parameter, ' ', '')) || '%'

lower函数可以帮助我们进行不区分大小写的搜索。 REPLACE消除了空格。

我希望这能给你一个线索。这是通过to,cc和bcc列搜索电子邮件ID的一部分的最简单方法。请根据您的要求修改WHERE条件。