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つ以上のキーワードが見つからない場合、結果は削除されません。
たとえば、Steve Smithを検索する場合、Steveに入力するとSteveの行が表示されます。スミスも同様です。私がスティーブスミスを入力すると、正しい行が表示されます。
私はSteve Jobsのようなものを入力すると間違っています。これを入力すると、スティーブ・スミスはそれを避けるべきです。誰かがこれを回避するための手がかりを持っていますか?
ご協力いただきありがとうございます。 Chris
'WHERE'節で' OR'を 'AND'に変更できない理由はありますか? – JNK
「スミス・スティーブ」にはどんな結果が欲しいですか? –
私は条件を変更することができます、すべての異なるバリエーションを試してみましたが、すべてが正しい結果を提供していません。スティーブスミスと私は結果を表示したい、私はそれをスティーブジョブズの結果を表示したい。ありがとう – Chris