如何使mysql在大写和小写之间有所区别

时间:2014-05-30 00:27:41

标签: mysql utf-8 uppercase alter-table lowercase

我需要在mysql中查找查询中大写和小写之间的区别。

因为我需要在我的java程序中选择用户名。

我试过了:

  • 数据库名称utf8
  • 表名称为user_table

查询:

create table user_table (id int, name varchar(30));

insert into a user_table (1, "zdi0"), (2, "ZDI0");

ALTER DATABASE utf8 CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ALTER TABLE user_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

select * 
from a 
where name = "ZDI0" ; 

结果:

1  zdi0
2  ZDI0

我需要更改表而不是查询

提前致谢

2 个答案:

答案 0 :(得分:3)

排序规则utf8_unicode_ci不区分大小写。如果要使用utf8排序规则并支持区分大小写,则需要使用utf8_bin,但utf8_bin是二进制排序规则。在您决定使用它之前,您应该阅读它。不幸的是,据我所知,utf8_bin是目前MySQL中唯一的区分大小写的utf8排序规则。

答案 1 :(得分:0)

如果要比较确切大小写的值,可以使用'binary'函数。

示例

mysql> select ( @U := 'Ravinder' ) = ( @L := 'ravinder' ) as `true`
    ->      , @U=binary( @L ) as `false`;
+------+-------+
| true | false |
+------+-------+
|    1 |     0 |
+------+-------+

无论整理是什么,此用法都会对完全匹配进行明确比较。