带有通配符的MySQL LIKE语句


MySQL LIKE statement with wildcards

我正在构建一个由PHP脚本驱动的MySQL电影海报/粉丝艺术数据库。我创建了一个自动完成输入字段,用户可以在其中搜索电影标题。就像所有自动完成字段一样,当用户开始键入电影标题时,就会显示出来。

现在MySQL查询如下:

 SELECT posters FROM pictures WHERE pictures LIKE '$text%'

上面的模式匹配每个以键入的字母开头的电影标题。由于dartabase包含大约10000个电影标题,当用户键入第一个字母时,自动完成功能会延迟。为了加快自动完成函数中的搜索查询速度,我希望使用一个模式,该模式至少匹配字符串中的两个(或更多(字母,而不仅仅是字符串的开头。例如,如果用户键入:

'pie' 

自动完成功能应显示:

'American pie'
'American pie 2'

使用MySQL通配符"_"(下划线(没有帮助。有没有一种方法可以赋予自动完成功能这个功能?

感谢

SELECT posters FROM pictures WHERE pictures LIKE '%{$text}%' 
SELECT posters FROM pictures WHERE LENGTH('{$text}') > 1 AND pictures LIKE '%{$text}%' 

如果第一次检查失败,mysql不会尝试每一行

长度索引也有助于处理这种类型的字段/查询,例如,使长度为2的一个和长度为5的一个以及其余的一个(如果不是太大的话(