我有一个自动填充功能,适用于您输入到输入字段的任何字母组合。但现在我希望它忽略我正在搜索的结果中的破折号。
我输入了输入框
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查询中执行此操作?
答案 0 :(得分:5)
将您的查询修改为:
SELECT
roomname
FROM
sec_rooms_new
WHERE
REPLACE(LOWER(roomname), '-', '') LIKE '%#lcase(url.term)#%'
AND dontshow = 0
REPLACE
function用空字符串替换任何-
次出现。这意味着ea-1
变为ea1
,因此在您搜索ea1
时会返回。
使用此查询可能会很慢,因为每次执行此查询时,数据库都会将REPLACE
和LOWER
函数应用于所有行的roomname
值。最好创建一个额外的列,用于存储准备好的roomname
值(因此已经应用了REPLACE
和LOWER
函数)。然后你可以搜索这个列,这将更快。
还有一件事:根据您的设置(列类型和字符集),LIKE
可能已经不区分大小写。这意味着您可以从LOWER
语句中删除WHERE
函数,这将使查询更快。请在MySQL docs。