我有一个包含字符集的表latin1
(通过检查show variables like "character_set_database";
) 和默认排序规则latin1_swedish_ci
(通过检查SHOW TABLE STATUS;
).
我想使用排序规则运行查询latin1_general_cs
,它是在我的系统上编译的(由Show collation LIKE "%_cs";
):
select * from myTab WHERE col RLIKE '[[:upper:]]' COLLATE 'latin1_general_cs' LIMIT 10;
这给出了一个错误:
ERROR 1253 (42000): COLLATION 'latin1_general_cs' is not valid for CHARACTER SET 'utf8'
即使默认排序规则也不起作用:
select * from myTab WHERE col RLIKE '[[:upper:]]' COLLATE 'latin1_swedish_ci' LIMIT 10;
error:
ERROR 1253 (42000): COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'
怎么了?是因为我的终端以UTF-8发送数据吗? (是“UTF-8 连接”吗?)我怎样才能使用区分大小写的排序规则?我需要它,否则似乎无法检查大写字母。
您可能会发现这很有趣。
utf8 和 latin1 的区别 https://stackoverflow.com/questions/2708958/differences-between-utf8-and-latin1
我不能说我是这个领域的专家,但据我所知,UTF8 和 Latin1 对字符的编码方式不同。因此尝试使用 Latin1 来整理 UTF8 是没有意义的。
http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html
Whereas:
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
是一致的。
Update
抱歉,我刚刚重新阅读了您的问题,您说该表正在使用 latin1。奇怪的。您是否尝试过使用 utf8 排序规则?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)