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

In Oracle Database, how do you extract text in-between characters? (SQL)

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

在处理 activity 时,我遇到了一个让我感到困惑的问题 -- 我试图从中间字符中提取特定文本。使用这些函数我似乎无法弄清楚的具体 activity 是:

对于名为 Users 的 table 在名为 Emails 的列中,仅提取电子邮件域(即文本在 @ 和 .) 之间,因此完整的电子邮件地址:

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

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

使用此代码:

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

任何帮助将不胜感激!我已经为此挠头好几个小时了!谢谢!!!

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

警告:

我假设电子邮件使用单个点将域名与域类型分开(例如 comnet)。如果您有像 joe@domain.his.us 这样的电子邮件,那么上面的查询将 return domain 作为域。

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

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