1

我有一个这样的查询,在一个表上执行,其中有几个关键字逗号分隔在字段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

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

4

3 回答 3

2

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

于 2013-06-28T14:53:37.363 回答
0

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

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

于 2013-06-28T13:59:31.667 回答
0

极其愚蠢和无法解决的问题。

我将关键字 likeor或扩展and为实际查询逻辑,即使它们在预处理脚本中的一个单词内,所以搜索handsome将扩展为h && some.

对不起。

于 2013-07-15T10:23:00.447 回答