从Oracle查询中的任何一个字符中删除

时间:2017-10-05 07:54:56

标签: sql regex oracle

Sample Mail ID: maniyuva21_etc@xyz.com

我应该从_etc删除字符。但同样如果_etc在某些邮件ID中不可用,则应从@删除。

所以我的结果将是maniyuva21

我需要在Oracle查询中完成此操作

2 个答案:

答案 0 :(得分:3)

我会使用REGEX_REPLACE

来自 SQLPLUS

示例

SQL> SELECT REGEXP_REPLACE('maniyuva21_etc@xyz.com', '(_etc)?@.*$', '') FROM dual;

REGEXP_REP
----------
maniyuva21

SQL> SELECT REGEXP_REPLACE('maniyuva21@xyz.com', '(_etc)?@.*$', '') FROM dual;

REGEXP_REP
----------
maniyuva21

注意:Oracle引擎必须> = 10g

答案 1 :(得分:0)

使用 CASE 表达式检查电子邮件字符串是否包含_etc。然后使用 SUBSTR INSTR 的组合来提取所需的部分。

<强>查询

select email_column,
case when email_column like '%_etc@%'
then substr(email_column, 1, instr(email_column, '_etc@', 1) - 1)
else substr(email_column, 1, instr(email_column, '@', 1) - 1) end as new_email_column
from your_emails_table;