像搜索区分大小写?

时间:2013-06-28 13:48:35

标签: mysql select innodb sql-like case-sensitive

我有一个这样的查询,在一个表上执行,其中在keywords字段中有几个关键字逗号分隔,带有一个前导和尾随逗号:

SELECT media_id, filename FROM media WHERE keywords LIKE '%,house,%'

然而,它找不到任何东西(该表中有几千条记录,其中很多都有关键字"House")。即使搜索'%,House,%'也找不到任何内容。

在所有上限中进行类似的搜索是有效的:

SELECT media_id, filename FROM media WHERE keywords LIKE '%,HOUSE,%'

现在它还会找到像House这样的关键字。

表格和keywords列的整理为latin1_german1_ci

这种行为来自哪里?
如何获得通常完全不区分大小写的行为?

3 个答案:

答案 0 :(得分:2)

当区分大小写出现时,我经常会LOWER(keywords) like ('%house%')

答案 1 :(得分:0)

您可以更改列的排序规则,也可以像这样进行转换:

SELECT media_id,filename FROM media WHERE keywords LIKE'%,house,%'COLLATE utf8_general_ci

答案 2 :(得分:0)

非常愚蠢和无法解决的问题。

我将orand等关键字扩展为实际查询逻辑,即使它们位于预处理脚本中的单词内,因此搜索handsome会扩展为h && some }。

对不起。