首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从电子邮件地址中选择域名

如何从电子邮件地址中选择域名
EN

Stack Overflow用户
提问于 2010-04-13 16:45:48
回答 13查看 111.7K关注 0票数 52

我有像user1@gmail.comuser2@ymail.com user3@hotmail.com这样的电子邮件地址。等。我想要一个Mysql的SELECT,将削减用户名和.com,并返回输出为gmailymailhotmail等。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-04-13 17:18:51

假设该域是像gmail.com、yahoo.com这样的单个单词域,使用

代码语言:javascript
运行
复制
select (SUBSTRING_INDEX(SUBSTR(email, INSTR(email, '@') + 1),'.',1))

内部SUBSTR@之后获取电子邮件地址的正确部分,外部SUBSTRING_INDEX将在第一个周期截断结果。

否则,如果域需要包含多个单词,如mail.yahoo.com等,请使用:

代码语言:javascript
运行
复制
select (SUBSTR(email, INSTR(email, '@') + 1, LENGTH(email) - (INSTR(email, '@') + 1) - LENGTH(SUBSTRING_INDEX(email,'.',-1)))) 

LENGTH(email) - (INSTR(email, '@') + 1) - LENGTH(SUBSTRING_INDEX(email,'.',-1))将通过使用带有负数的SUBSTRING_INDEX获得域的长度减去TLD (.com, .biz etc. part),这将从右到左计算。

票数 75
EN

Stack Overflow用户

发布于 2013-11-11 13:31:31

我更喜欢:

代码语言:javascript
运行
复制
select right(email_address, length(email_address)-INSTR(email_address, '@')) ...

因此,您不必猜测您的用户的电子邮件域有多少子域。

票数 63
EN

Stack Overflow用户

发布于 2016-04-22 05:54:29

对于PostgreSQL:

代码语言:javascript
运行
复制
split_part(email, '@', 2) AS domain

完整查询:

代码语言:javascript
运行
复制
SELECT email, split_part(email, '@', 2) AS domain
FROM users;

参考:http://www.postgresql.org/docs/current/static/functions-string.html

归功于https://stackoverflow.com/a/19230892/1048433

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2628138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档