How to select domain name from email address

后端 未结 13 2476
半阙折子戏
半阙折子戏 2020-12-08 02:05

I have email addresses like user1@gmail.com, user2@ymail.com user3@hotmail.com ... etc. I want a Mysql SELECT that will trim user name

13条回答
  •  一向
    一向 (楼主)
    2020-12-08 02:39

    Assuming that the domain is a single word domain like gmail.com, yahoo.com, use

    select (SUBSTRING_INDEX(SUBSTR(email, INSTR(email, '@') + 1),'.',1))
    

    The inner SUBSTR gets the right part of the email address after @ and the outer SUBSTRING_INDEX will cut off the result at the first period.

    otherwise if domain is expected to contain multiple words like mail.yahoo.com, etc, use:

    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)) will get the length of the domain minus the TLD (.com, .biz etc. part) by using SUBSTRING_INDEX with a negative count which will calculate from right to left.

提交回复
热议问题