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查询中执行此操作?
将您的查询修改为:
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.
使用此查询可能会很慢,因为每次执行它时,数据库都会对所有行的值应用REPLACE和LOWER函数roomname.这可能是最好创建您存储的预备值一个额外的列roomname(于是有了REPLACE和LOWER已经应用功能).然后你可以搜索这个列,这将更快.
还有一件事:取决于您的设置(列类型和字符集)LIKE可能已经不区分大小写.这意味着您可以LOWER从WHERE语句中删除该函数,这将使查询更快.在MySQL文档中阅读更多相关内容.