Ste*_*yts 5 mysql collation character-encoding
在Debian上运行的MySQL数据库(版本5.5.41-0 + wheezy1-log).
hotels带有列name VARCHAR(128)和引擎的表是InnoDB.
CREATE TABLE `hotels` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
`name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Hotel Name',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
此表中有两条记录:
1 BEST WESTERN PREMIER LE CARRE FOLIES OPERA
2 BEST WESTERN PREMIER LE CARRÉ FOLIES OPÉRA
Run Code Online (Sandbox Code Playgroud)
执行时select DISTINCT name FROM hotels,查询只返回1条记录,而预计会返回2条记录.
DBMS在E和É之间似乎没有区别.
如何更改表设置以获得预期结果?
表排序规则设置为utf8_general_ci. 这是 MySQL 服务器和架构的默认设置。
MySQL 5.5 中有 3 个可用的排序规则名称:
_ci表示不区分大小写的排序规则。_cs表示区分大小写的排序规则。_bin表示二进制排序规则。字符比较基于字符二进制代码值。排序规则必须更改为utf8_bin. 可以使用此查询对表和所有列执行此操作:
ALTER TABLE hotels CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |