Jquery Autocomplete忽略搜索上的破折号

use*_*239 0 coldfusion jquery autocomplete

我有一个自动完成功能,适用于您输入到输入字段的任何字母组合.但现在我希望它忽略我正在搜索的结果中的破折号.

我输入输入框

EA1

它会找到

EA-1

自动填充代码

$("#customer"+myIndex).autocomplete({
         source: "AS_userLookup.cfm",
         select: function(e, ui){
Run Code Online (Sandbox Code Playgroud)

我的数据库查询

 SELECT roomname        
 From sec_rooms_new
 where lower(roomname) like '%#lcase(url.term)#%' and dontshow = 0
Run Code Online (Sandbox Code Playgroud)

我会在jquery中执行此操作还是在db查询中执行此操作?

Jon*_*han 5

将您的查询修改为:

SELECT
    roomname        
FROM
    sec_rooms_new
WHERE
    REPLACE(LOWER(roomname), '-', '') LIKE '%#lcase(url.term)#%'
    AND dontshow = 0
Run Code Online (Sandbox Code Playgroud)

REPLACE 函数-空字符串替换任何出现的内容.这意味着ea-1成为ea1并因此在您搜索时返回ea1.

使用此查询可能会很慢,因为每次执行它时,数据库都会对所有行的值应用REPLACELOWER函数roomname.这可能是最好创建您存储的预备值一个额外的列roomname(于是有了REPLACELOWER已经应用功能).然后你可以搜索这个列,这将更快.

还有一件事:取决于您的设置(列类型和字符集)LIKE可能已经不区分大小写.这意味着您可以LOWERWHERE语句中删除该函数,这将使查询更快.在MySQL文档中阅读更多相关内容.