首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery自动完成在搜索时忽略破折号

Jquery自动完成在搜索时忽略破折号
EN

Stack Overflow用户
提问于 2012-05-07 21:03:13
回答 1查看 627关注 0票数 0

我有一个自动完成功能,可以处理您在输入字段中键入的任意字母组合。但现在我希望它忽略我正在搜索的结果中的破折号。

我在输入框中键入

ea1

它会找到

ea-1

自动补全代码

代码语言:javascript
复制
$("#customer"+myIndex).autocomplete({
         source: "AS_userLookup.cfm",
         select: function(e, ui){

我的数据库查询

代码语言:javascript
复制
 SELECT roomname        
 From sec_rooms_new
 where lower(roomname) like '%#lcase(url.term)#%' and dontshow = 0

我是在jquery中做还是在db查询中做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-07 21:11:36

将您的查询修改为:

代码语言:javascript
复制
SELECT
    roomname        
FROM
    sec_rooms_new
WHERE
    REPLACE(LOWER(roomname), '-', '') LIKE '%#lcase(url.term)#%'
    AND dontshow = 0

REPLACE function将所有出现的-替换为空字符串。这意味着ea-1变成了ea1,因此当您搜索ea1时会返回它。

使用这个查询可能很慢,因为每次执行它时,数据库都会对所有行的roomname值应用REPLACELOWER函数。创建一个额外的列来存储roomname的预备值可能会更好(因此,在已经应用了REPLACELOWER函数的情况下)。然后你可以在这个栏目上搜索,这样会快得多。

还有一件事:根据您的设置(列类型和字符集),LIKE可能已经不区分大小写。这意味着您可以从WHERE语句中删除LOWER函数,这将使查询速度更快。在MySQL docs上阅读更多关于它的信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10482596

复制
相关文章

相似问题

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