Jquery Autocomplete忽略搜索上的破折号

时间:2012-05-07 13:03:13

标签: jquery coldfusion autocomplete

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

我输入了输入框

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查询中执行此操作?

1 个答案:

答案 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时会返回。

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

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

中详细了解相关信息