3

我有一个带有字符集latin1(检查show variables like "character_set_database";)和默认排序规则latin1_swedish_ci(检查SHOW TABLE STATUS;)的表。

我想使用latin1_general_cs在我的系统上编译的 collat​​ion 运行查询(由 检查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 1253 (42000): COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'

怎么了?是因为我的终端以 UTF-8 格式发送数据吗?(是“UTF-8 中的连接”吗?)我怎么能使用区分大小写的排序规则?我需要它,否则似乎无法检查大写字母。

4

2 回答 2

3

你可能会觉得这很有趣。

utf8 和 latin1 的区别

我不能说我是这方面的专家,但据我所知,UTF8 和 Latin1 对字符的编码方式不同。因此,尝试使用 Latin1 整理 UTF8 是没有意义的。

http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html

然而:

CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

是一致的。

更新

抱歉,我刚刚重新阅读了您的问题,您说该表使用的是 latin1。奇怪的。您是否尝试过使用 utf8 排序规则?

于 2013-05-15T09:48:29.027 回答
0
于 2017-03-16T12:20:26.640 回答