我是SQL的新手,我一直在尝试使用Oracle数据库。
在开展活动时,我遇到了一个令我困惑的问题 - 我正在尝试从中间字符中提取特定文本。我似乎无法弄清楚使用这些函数的具体活动是:
对于名为电子邮件的列中名为用户的表,仅提取电子邮件域(即@和。之间的文本),以便完整的电子邮件地址:
成为名为域的新列,其值为:
到目前为止,我只能编写仅将用户名隔离到的代码:
使用此代码:
`select rtrim(Emails,substr(Emails,instr(Emails,'@')))
from StudentEmails;`
任何帮助都将非常感谢!几个小时以来,我一直在摸不着头脑!谢谢!!!
答案 0 :(得分:0)
SELECT SUBSTR(Emails,
INSTR(Emails, '@') + 1,
INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains
FROM Users
<强>警告:强>
我认为电子邮件具有将域名与域名类型分开的单点(例如com
,net
)。如果您收到了joe@domain.his.us
这样的电子邮件,则上述查询会返回domain
作为域名。
答案 1 :(得分:0)
正则表达式将是另一种方式:
select substr(regexp_substr(emails,'@[^.]+'),2) domains from users;