回答

收藏

MySQL SELECT DISTINCT应该区分大小写吗?

技术问答 技术问答 167 人阅读 | 0 人回复 | 2023-09-14

如何使MySQL的SELECT DISTINCT区分大小写?
* ]8 O8 f* z( [8 @: q# S! ^create temporary table X (name varchar(50) NULL);
$ |# j* `/ l" E* v3 Ainsert into X values ('this'), ('This');: [: Q0 m7 j/ K. y
现在这个查询:& H& K1 x5 }7 m7 n" T4 @& e/ }% }
select distinct(name) from X;, L( B6 V* u4 S  g6 o2 F0 c
结果是:
9 i# D& {) A8 v' s/ i4 r/ p1 C- j% q# I

; ]( ?  Z, n4 V8 K, }" ]9 ?1 w

% y! Z( Y: M, v0 S; ?这里发生了什么?我希望SELECT DISTINCT区分大小写。那不是默认值吗?0 g4 m8 B0 C; [8 D
               
" W8 \: J6 g' `  n6 ?  ~3 ^解决方案:" [; B# i6 \) f; o; H$ h
               
' ?+ b* J6 B' A/ P  E0 l5 J2 J( F
  i+ ~* M0 y# r) D& i# R2 _) ^/ z8 R( t+ Y0 F3 P9 i
                为此使用BINARY运算符:
, l- Q- ^" Q9 \SELECT DISTINCT(BINARY name) AS Name FROM X;8 m" F3 r) m* Z- D
您还CAST可以在选择以下内容时选择:- c& [, u- a. J! G" }8 f; r
SELECT DISTINCT # ?* Y4 M& M3 ~( S
(CAST(name AS CHAR CHARACTER SET utf8) COLLATE utf8_bin) AS Name FROM X;' X: U  g" f1 |& @+ M
看到这个SQLFiddle
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则