带有通配符的MySQL LIKE语句

时间:2011-11-14 13:53:06

标签: php mysql

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

现在MySQL查询如下:

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

上述模式匹配以键入的字母开头的每个电影标题。由于dartabase包含aprox 10.000电影标题,因此当用户键入第一个字母时,自动完成功能会有延迟。为了加速自动完成功能中的搜索查询,我想使用一种模式,该模式至少匹配字符串中的两个(或更多)字母,而不仅仅是在字符串的开头。 例如,如果用户键入:

'pie' 

自动完成功能应显示:

'American pie'
'American pie 2'

使用MySQL通配符'_'(下划线)没有帮助。有没有一种方法可以为自动完成功能提供此功能?

谢谢

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

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

还有这种类型的字段/查询的长度帮助索引,例如,使长度为2,长度为5,其余为1(如果不是太大)