首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有通配符的MySQL LIKE语句

带有通配符的MySQL LIKE语句
EN

Stack Overflow用户
提问于 2011-11-14 21:53:06
回答 2查看 5.9K关注 0票数 0

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

现在,MySQL查询如下:

代码语言:javascript
复制
 SELECT posters FROM pictures WHERE pictures LIKE '$text%'

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

代码语言:javascript
复制
'pie' 

自动完成功能应显示:

代码语言:javascript
复制
'American pie'
'American pie 2'

使用MySQL通配符'_‘(下划线)无济于事。有没有一种方法可以给自动补全功能提供这个功能?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-14 22:12:07

代码语言:javascript
复制
SELECT posters FROM pictures WHERE LENGTH('{$text}') > 1 AND pictures LIKE '%{$text}%' 

mysql足够聪明,不会在第一次检查失败时尝试每一行

同样,带有长度的索引对这种类型的字段/查询也有帮助,例如,将一个长度设置为2,一个设置为长度5,另一个用于其他字段/查询(如果不太大的话)

票数 2
EN

Stack Overflow用户

发布于 2011-11-14 21:54:17

代码语言:javascript
复制
SELECT posters FROM pictures WHERE pictures LIKE '%{$text}%' 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8122583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档