不区分大小写的搜索查询获取错误:COLLATION'utf8_general_ci'对CHARACTER SET'latin1'无效

时间:2014-01-06 17:32:41

标签: mysql sql character-encoding

我正在开展一个项目,我需要在具有特殊字符的字段中添加搜索功能。不幸的是,我需要搜索的字段没有正确编码。

我想在字段中搜索单词kèku,但只需输入单词 keku (无重音符号)。

问题出现了,领域正在返回像Wèkikü¨sapëlee。这样的东西,而不是Wèmikèkosapëlee。

我已通过运行以下查询修复了该问题:

select CONVERT(CAST(CONVERT(text USING latin1) AS BINARY) USING utf8) as 'textlenape'
from samples_lenape where text_english like '%bright%'

返回我想要的文本,但是当我想通过在查询末尾添加collate utf8_general_ci使其不区分大小写时,我收到以下错误:

COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

如果我没有整理查询结果,我就无法搜索 keku ,因为我得到一个空的结果集。有关如何将其转换为能够进行不区分大小写的搜索的任何想法?我不想改变表数据,因为如果我这样做,网站的其余部分可能会中断。

1 个答案:

答案 0 :(得分:0)

我明白了。我必须选择所有内容并在我的WHERE子句中进行转换/整理。

select * 
from samples_lenape 
where CONVERT(CAST(CONVERT(text USING latin1) AS BINARY) USING utf8) like _utf8 '%keku%' 
collate utf8_general_ci