删除部分电子邮件地址

时间:2016-05-20 08:07:14

标签: sql postgresql

我收到了@等电子邮件。

我希望在.之后和joebloggs之前选择所有内容。

结果应为#c:: Send, {CTRLDOWN}c{CTRLUP}{ALTDOWN}{TAB}{ALTUP} sleep, 300 Send, {CTRLDOWN}v{CTRLUP}{ENTER}{ALTDOWN}{TAB}{ALTUP} return

3 个答案:

答案 0 :(得分:1)

以下是使用substringposition的解决方案:

substring(col from (position('@' in col)+1)
              for (
                  position('.' in substring(col from (position('@' in col)+1))) - 1
              )
          )

答案 1 :(得分:1)

简单的正则表达式模式应该可以胜任。

SELECT regexp_matches('sales@joebloggs.subdomain.com', '@([^.]+)\.');

SQL Fiddle

编辑:已修复以支持子域名。我假设你想在第一个点之前得到这个部分。

答案 2 :(得分:0)

使用substring和instr

的解决方案

选择 substring('sales@joebloggs.com',instr('sales@joebloggs.com','@')+ 1,instr('sales@joebloggs.com','。') - (instr('sales @ joebloggs。 com','@')+ 1)) FROM dual;