MySQL 忽略大小写的 DISTINCT?


如果您想要区分大小写的 distinct,您需要使用 UPPER() 或 LOWER()。

案例 1: 使用 UPPER()。

语法如下

SELECT DISTINCT UPPER(yourColumnName) FROM yourTableName;

案例 2: 使用 LOWER()。

语法如下

SELECT DISTINCT LOWER(yourColumnName) FROM yourTableName;

为了理解上述语法,让我们创建一个表。创建表的查询如下

mysql> create table CaseInsensitiveDistinctDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> UserEmailId varchar(30),
   -> UserPassword varchar(10),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.64 sec)

现在,您可以使用 insert 命令在表中插入一些记录。该查询如下

mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','john123');
Query OK, 1 row affected (0.15 sec)
mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','654321');
Query OK, 1 row affected (0.43 sec)
mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','999999');
Query OK, 1 row affected (0.14 sec)
mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','334556');
Query OK, 1 row affected (0.16 sec)
mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','1010101');
Query OK, 1 row affected (0.13 sec)
mysql> insert into CaseInsensitiveDistinctDemo(UserEmailId,UserPassword) values('[email protected]','12345678');
Query OK, 1 row affected (0.20 sec)

使用 select 语句从表中显示所有记录。该查询如下

mysql> select *from CaseInsensitiveDistinctDemo;

以下是输出

+----+-----------------+--------------+
| Id | UserEmailId     | UserPassword |
+----+-----------------+--------------+
|  1 | [email protected]  | john123      |
|  2 | [email protected]  | 654321       |
|  3 | [email protected]  | 999999       |
|  4 | [email protected]  | 334556       |
|  5 | [email protected] | 1010101      |
|  6 | [email protected] | 12345678     |
+----+-----------------+--------------+
6 rows in set (0.00 sec)

以下是选择忽略大小写 distinct 的查询。

案例 1: 使用 UPPER()。该查询如下

mysql> select distinct upper(UserEmailId) from CaseInsensitiveDistinctDemo;

以下是输出

+--------------------+
| upper(UserEmailId) |
+--------------------+
| [email protected]     |
| [email protected]     |
| [email protected]    |
| [email protected]    |
+--------------------+
4 rows in set (0.06 sec)

案例 2: 使用 LOWER()。该查询如下

mysql> select distinct lower(UserEmailId) from CaseInsensitiveDistinctDemo;

以下是输出

+--------------------+
| lower(UserEmailId) |
+--------------------+
| [email protected]     |
| [email protected]     |
| [email protected]    |
| [email protected]    |
+--------------------+
4 rows in set (0.00 sec)

更新于: 2019 年 7 月 30 日

5K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告