Sample Mail ID: maniyuva21_etc@xyz.com
我应该从_etc
删除字符。但同样如果_etc
在某些邮件ID中不可用,则应从@
删除。
所以我的结果将是maniyuva21
我需要在Oracle查询中完成此操作
答案 0 :(得分:3)
我会使用REGEX_REPLACE
。
示例:
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;