我正在寻找一种方法来使用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