如何通过电子邮件地址域订购查询?

时间:2014-12-29 13:29:16

标签: sql sql-server sql-order-by concatenation

我没有在SQL中使用串联,也不知道如何做到这一点。

假设我有一个包含几个电子邮件地址(varchar)的电子邮件列。 然后我有LastLogin(datetime)的另一列。

john@gmail.com
Frank@yahoo.com
Donny@apple.com

查询如何首先查看lastLogin日期的排序,然后查找电子邮件的域名?

3 个答案:

答案 0 :(得分:2)

您可以使用charindex()substring()

order by lastLogin,
         substring(email, charindex('@', email) + 1, len(email))

如果您想要登录的 date 组件:

order by cast(lastLogin as date),
         substring(email, charindex('@', email) + 1, len(email))

答案 1 :(得分:1)

假设您正在使用MySQL,以下查询应该适合您:

SELECT * FROM YourTable ORDER BY lastLogin, SUBSTRING_INDEX(email, '@', -1);

您向SUBSTRING_INDEX提供列的名称,分隔符和分隔符的出现次数为-1,以便在分隔符后的左侧获取所有内容。

答案 2 :(得分:0)

试试这可能会有所帮助

select * from table order by  `lastLogin date`,reverse(email);