在Oracle数据库中,如何在字符之间提取文本? (SQL)

时间:2016-09-13 03:58:48

标签: sql oracle oracle10g

我是SQL的新手,我一直在尝试使用Oracle数据库。

在开展活动时,我遇到了一个令我困惑的问题 - 我正在尝试从中间字符中提取特定文本。我似乎无法弄清楚使用这些函数的具体活动是:

对于名为电子邮件的列中名为用户的表,仅提取电子邮件域(即@和。之间的文本),以便完整的电子邮件地址:

  • mjane@yahoo.com
  • jdoe@aol.com
  • jbarry@outlook.com

成为名为的新列,其值为:

  • yahoo
  • AOL

到目前为止,我只能编写仅将用户名隔离到的代码:

  • mjane
  • jdoe的
  • jbarry

使用此代码:

    `select rtrim(Emails,substr(Emails,instr(Emails,'@')))
    from StudentEmails;`

任何帮助都将非常感谢!几个小时以来,我一直在摸不着头脑!谢谢!!!

2 个答案:

答案 0 :(得分:0)

SELECT SUBSTR(Emails,
              INSTR(Emails, '@') + 1,
              INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains
FROM Users

<强>警告:

我认为电子邮件具有将域名与域名类型分开的单点(例如comnet)。如果您收到了joe@domain.his.us这样的电子邮件,则上述查询会返回domain作为域名。

答案 1 :(得分:0)

正则表达式将是另一种方式:

select substr(regexp_substr(emails,'@[^.]+'),2) domains from users;