我正在尋找一種方法來使用Coldfusion在多個關鍵字的sql表中搜索多個列。我目前有以下代碼,一半工作。SQL查詢 - 多個關鍵字搜索多列
<cfquery name="rsSearchEmployees" datasource="#request.database#">
SELECT idn, firstname, lastname
FROM Employees
WHERE (<cfloop list="#arguments.nameSearchString#" delimiters=" " index="word">firstname LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#Trim(word)#%" /> OR </cfloop> (1 <> 1))
OR (<cfloop list="#arguments.nameSearchString#" delimiters=" " index="word">lastname LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#Trim(word)#%" /> OR </cfloop> (1 <> 1))
ORDER BY firstname ASC
它搜索2列,名字和姓氏的關鍵字輸入到一個文本框。關鍵字使用cfloop標籤進行分解。
此代碼確實會生成結果,但如果在一列或兩列中未找到2個或更多關鍵字,則當前不會刪除結果。
例如,假設我想搜索史蒂夫史密斯,當我輸入史蒂夫時,它顯示了史蒂夫的行。史密斯也是如此。如果我輸入史蒂夫史密斯,它仍然顯示正確的行。
當我輸入類似史蒂夫喬布斯的東西時,它會出錯。鍵入這個仍然顯示史蒂夫史密斯什麼時候不應該。有沒有人有線索如何解決這個問題?
感謝您提前提供任何幫助。 Chris
是否有理由不能在'WHERE'子句中將'OR'更改爲'AND'? – JNK 2010-12-10 13:58:56
你想要什麼結果「史密斯史蒂夫」? – 2010-12-10 14:12:15
我可以改變條件,嘗試所有不同的變化,但都不提供正確的結果。史蒂夫史密斯,我希望它顯示結果,我不希望它顯示史蒂夫喬布斯的結果。謝謝 – Chris 2010-12-10 14:19:15