我有一个自动完成功能,可以处理您在输入字段中键入的任意字母组合。但现在我希望它忽略我正在搜索的结果中的破折号。
我在输入框中键入
ea1
它会找到
ea-1
自动补全代码
$("#customer"+myIndex).autocomplete({
source: "AS_userLookup.cfm",
select: function(e, ui){我的数据库查询
SELECT roomname
From sec_rooms_new
where lower(roomname) like '%#lcase(url.term)#%' and dontshow = 0我是在jquery中做还是在db查询中做?
发布于 2012-05-07 21:11:36
将您的查询修改为:
SELECT
roomname
FROM
sec_rooms_new
WHERE
REPLACE(LOWER(roomname), '-', '') LIKE '%#lcase(url.term)#%'
AND dontshow = 0REPLACE function将所有出现的-替换为空字符串。这意味着ea-1变成了ea1,因此当您搜索ea1时会返回它。
使用这个查询可能很慢,因为每次执行它时,数据库都会对所有行的roomname值应用REPLACE和LOWER函数。创建一个额外的列来存储roomname的预备值可能会更好(因此,在已经应用了REPLACE和LOWER函数的情况下)。然后你可以在这个栏目上搜索,这样会快得多。
还有一件事:根据您的设置(列类型和字符集),LIKE可能已经不区分大小写。这意味着您可以从WHERE语句中删除LOWER函数,这将使查询速度更快。在MySQL docs上阅读更多关于它的信息。
https://stackoverflow.com/questions/10482596
复制相似问题