Mysql子串

5 mysql csv substring

嗨所有我正在尝试迁移到一个新的邮件服务器,所以我想编写Mysql脚本返回一个表,如下所示导出结果为CSV文件sql语句如下

`select email,clear,email AS domain from postfix_users `
Run Code Online (Sandbox Code Playgroud)

我希望在域名之前对@和@符号之前的任何字符进行子串,任何想法都会很有帮助

mysql> select email,clear,email AS domain from postfix_users ;

+---------------------------+--------+---------------------------+
| email                     | clear  | domain                    |
+---------------------------+--------+---------------------------+
| user@domain.tld           | passw  | user@domain.tld           |
+---------------------------+--------+---------------------------+
Run Code Online (Sandbox Code Playgroud)

And*_*mar 14

您可以使用LOCATE来查找@的位置:

 LOCATE('@',email)
Run Code Online (Sandbox Code Playgroud)

所以要找到域名:

SELECT CASE 
    WHEN LOCATE('@',email) = 0 THEN ''
    ELSE SUBSTRING(email,LOCATE('@',email)+1)
    END as Domain
FROM YourTable
Run Code Online (Sandbox Code Playgroud)