如何 select 分解 sql 中的列值

How to select exploded column value in sql

我知道,这可以使用 PHP 轻松完成,但只是好奇,

如何将 mail 字段分解为 select 来自 alias 列的值,第一个分解部分由 @

当前:

+-------+-----------------------------------------+
| alias | mail                                    |
+-------+-----------------------------------------+
|       | user.one@gmail.com                      |
|       | user.two.foo@gmail.com                  |
+-------+-----------------------------------------+

期望:

+-------+------------------------------------------------+
| alias        | mail                                    |
+-------+------------------------------------------------+
| user.one     | user.one@gmail.com                      |
| user.two.foo | user.two.foo@gmail.com                  |
+-------+------------------------------------------------+

在伪代码中就像

update tablename set tablename.alias = explode('@', tablename.mail)[0];

在MySQL中,可以使用substring_index():

update t
    set alias = substring_index(t.mail, '@', 1);