MySQL不区分大小写的DISTINCT

17

有人能告诉我如何在不区分大小写的情况下从我的数据库中选择DISTINCT吗?

我的查询是

SELECT DISTINCT email FROM `jm_order`
结果将所有表格中的电子邮件列出,但重复了不同大小写的电子邮件。这是预期的,因为值在大小写方面不同。 例如
sam@gmail.com
josh@gmail.com
Sam@gmail.com
john@gmail.com

但是我希望相同的邮件可以被分组在一起,而不考虑大小写。我需要如何调整 SQL 查询,避免出现例如 sam@gmail.comSam@gmail.com 这样重复的情况?


可能是["SELECT DISTINCT" ignores different cases]的重复问题。 - Cees Timmerman
3个回答

23

尝试使用 upper 函数

SELECT DISTINCT UPPER(email) FROM `jm_order`

您也可以使用lower代替。

SELECT DISTINCT LOWER(email) FROM `jm_order`

更多信息.


9

如果想保留电子邮件的大小写(以匹配其中一行),您可以执行以下操作:

select email
from jm_order
group by lower(email);

这真的有效吗?这怎么可能呢?数据库管理系统怎么知道应该返回哪个结果? - T3rm1
@T3rm1 . . . MySQL 会从任意匹配的行返回一封电子邮件。在更近版本的MySQL中,使用默认设置实际上会生成一个错误。 - Gordon Linoff

2

试试这个:

SELECT DISTINCT LOWER(email) AS email 
FROM `jm_order`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接