2011-08-16 68 views
0

試圖將SQL Server與jQuery自動完成一起使用。在檢查使用匹配域輸入的術語時,我可以得到以下工作,但我還希望自動填充檢查是否爲聯繫人姓名(名字和姓氏)找到匹配項。PHP SQL Server Concat

有沒有辦法(比如在mySQL中)連接fname和lname?

域名只:

($項=在自動完成框中輸入的數據)

SELECT distinct comp_companyid, comp_name, comp_emailaddress, comp_website, pers_firstname, pers_lastname, addr_address1, addr_address2, addr_city, addr_state, addr_postcode 
FROM company, person, address, address_link 
WHERE pers_companyid = comp_companyid 
    AND addr_addressid = adli_addressid 
    AND adli_companyid = comp_companyid 
    AND comp_website LIKE '%".$term."%'; 

我在匹配的名稱,以及嘗試:

SELECT distinct comp_companyid, comp_name, comp_emailaddress, comp_website, pers_firstname, pers_lastname, addr_address1, addr_address2, addr_city, addr_state, addr_postcode 
FROM company, person, address, address_link 
WHERE pers_companyid = comp_companyid 
    AND addr_addressid = adli_addressid 
    AND adli_companyid = comp_companyid 
    AND comp_website LIKE '%".$term."%' 
    OR pers_firstname + ' ' + pers_lastname LIKE '%".$term."%'; 
+1

,我希望你知道如何不安全的,這是。 –

+1

當心SQL注入的人!使用參數! – MaxiWheat

+1

很明顯,我沒有在這裏發佈我的整個代碼。我不傻。大聲笑。 – JimmyJammed

回答

0

想通了:

SELECT * FROM <TABLES> WHERE (website LIKE '%".$term."%' OR (firstname +' '+ lastname) LIKE '%".$term."%'; 
0

除了安全問題,這將會變得緩慢。您需要創建一個等於第一個+最後一列的虛擬視圖。 (在SQL女士,我相信這會看起來像):

select a.id, v.fullname 
from (select concat(first_name, " ", last_name) as fullname, id) v 
where a.id = v.id 
and fullname like '%searchterm%' 

既然你還沒有告訴MS SQL索引對這個組合的是,這將需要一段時間。您應該考慮更多全文搜索解決方案。

你可以匹配第一個或最後與像術語:

WHERE ( 
    firstname like '%searchterm%' 
    or lastname like '%searchterm%' 
    or comp_website like '%searchterm%') 
AND [other_clauses_here] 

這會更快。但最終,這種方法失去了動力,當你想要考慮更好的全文搜索解決方案時。