我有一个这样的查询,在一个表上执行,其中在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
。
这种行为来自哪里?
如何获得通常完全不区分大小写的行为?
答案 0 :(得分:2)
当区分大小写出现时,我经常会LOWER(keywords) like ('%house%')
答案 1 :(得分:0)
您可以更改列的排序规则,也可以像这样进行转换:
SELECT media_id,filename FROM media WHERE keywords LIKE'%,house,%'COLLATE utf8_general_ci
答案 2 :(得分:0)
非常愚蠢和无法解决的问题。
我将or
或and
等关键字扩展为实际查询逻辑,即使它们位于预处理脚本中的单词内,因此搜索handsome
会扩展为h && some
}。
对不起。