在 Oracle 数据库中,如何提取字符之间的文本? (SQL)
In Oracle Database, how do you extract text in-between characters? (SQL)
我是 SQL 的新人,我一直在尝试练习使用 Oracle 数据库。
在处理 activity 时,我遇到了一个让我感到困惑的问题 -- 我试图从中间字符中提取特定文本。使用这些函数我似乎无法弄清楚的具体 activity 是:
对于名为 Users 的 table 在名为 Emails 的列中,仅提取电子邮件域(即文本在 @ 和 .) 之间,因此完整的电子邮件地址:
- mjane@yahoo.com
- jdoe@aol.com
- jbarry@outlook.com
成为名为 Domains 的新列,其值为:
- 雅虎
- aol
- 展望
到目前为止,我只能编写将用户名隔离到的代码:
- 米珍
- jdoe
- 杰巴里
使用此代码:
`select rtrim(Emails,substr(Emails,instr(Emails,'@')))
from StudentEmails;`
任何帮助将不胜感激!我已经为此挠头好几个小时了!谢谢!!!
SELECT SUBSTR(Emails,
INSTR(Emails, '@') + 1,
INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains
FROM Users
警告:
我假设电子邮件使用单个点将域名与域类型分开(例如 com
、net
)。如果您有像 joe@domain.his.us
这样的电子邮件,那么上面的查询将 return domain
作为域。
正则表达式是另一种方式:
select substr(regexp_substr(emails,'@[^.]+'),2) domains from users;
我是 SQL 的新人,我一直在尝试练习使用 Oracle 数据库。
在处理 activity 时,我遇到了一个让我感到困惑的问题 -- 我试图从中间字符中提取特定文本。使用这些函数我似乎无法弄清楚的具体 activity 是:
对于名为 Users 的 table 在名为 Emails 的列中,仅提取电子邮件域(即文本在 @ 和 .) 之间,因此完整的电子邮件地址:
- mjane@yahoo.com
- jdoe@aol.com
- jbarry@outlook.com
成为名为 Domains 的新列,其值为:
- 雅虎
- aol
- 展望
到目前为止,我只能编写将用户名隔离到的代码:
- 米珍
- jdoe
- 杰巴里
使用此代码:
`select rtrim(Emails,substr(Emails,instr(Emails,'@')))
from StudentEmails;`
任何帮助将不胜感激!我已经为此挠头好几个小时了!谢谢!!!
SELECT SUBSTR(Emails,
INSTR(Emails, '@') + 1,
INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains
FROM Users
警告:
我假设电子邮件使用单个点将域名与域类型分开(例如 com
、net
)。如果您有像 joe@domain.his.us
这样的电子邮件,那么上面的查询将 return domain
作为域。
正则表达式是另一种方式:
select substr(regexp_substr(emails,'@[^.]+'),2) domains from users;