我有一个电子邮件地址user1@gmail.com,user2@ymail.com user3@hotmail.com…等等。我想一个MySQL SELECT,将修剪的用户名和.com和返回输出 gmail,ymail,hotmail,等。
user1@gmail.com
user2@ymail.com user3@hotmail.com
SELECT
gmail
ymail
hotmail
假设该域是单个单词域,例如gmail.com,yahoo.com,请使用
select (SUBSTRING_INDEX(SUBSTR(email, INSTR(email, '@') + 1),'.',1))
内部人员SUBSTR将在之后获得电子邮件地址的正确部分,@而外部人员SUBSTRING_INDEX将在第一个期间切断结果。
SUBSTR
@
SUBSTRING_INDEX
否则,如果domain应该包含多个单词,例如mail.yahoo.com,请使用:
mail.yahoo.com
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))将(.com, .biz etc. part)通过使用SUBSTRING_INDEX负计数获得域的长度减去TLD ,该负计数将从右到左计算。
LENGTH(email) - (INSTR(email, '@') + 1) - LENGTH(SUBSTRING_INDEX(email,'.',-1))
(.com, .biz etc. part)