【问题标题】:In Oracle Database, how do you extract text in-between characters? (SQL)在 Oracle 数据库中,如何提取字符之间的文本? (SQL)
【发布时间】:2016-09-13 03:58:47
【问题描述】:

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

在进行一项活动时,我遇到了一个让我感到困惑的问题——我正在尝试从中间字符中提取特定文本。我似乎无法使用这些功能弄清楚的具体活动是:

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

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

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

  • 雅虎
  • aol
  • 展望

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

  • mjane
  • jdoe
  • 杰巴里

使用此代码:

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

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

【问题讨论】:

    标签: sql oracle oracle10g


    【解决方案1】:
    SELECT SUBSTR(Emails,
                  INSTR(Emails, '@') + 1,
                  INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains
    FROM Users
    

    警告:

    我假设电子邮件以单点分隔域名和域类型(例如comnet)。如果您有类似joe@domain.his.us 的电子邮件,那么上述查询将返回domain 作为域。

    【讨论】:

    • 你太棒了!它就像一个魅力——我不敢相信仅仅 4 行代码就让我在圈子里转了几个小时,哈哈!显然我还有很多东西要学——非常感谢!!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2019-06-25
      • 2015-04-24
      相关资源
      最近更新 更多