大まかに言えば、これは些細なことのように思えますが、私は数時間頭を悩ませていたことがわかりました。
状況:
T私は列を持つテーブルを持っていますa,b,c,d,e。列には文字列aが保持され、b,c,d,e各列にはブール値が保持されます。
ユーザーがある種の検索を実行できるようにしています。ここでは、ユーザーに の値を入力するように求め、a,b,c,d,eそれらの値がすべて一致するすべての行を返します。
完璧な世界では、ユーザーはすべての値を入力し(たとえばa="JavaScript"、b="true"c="false"d="false"e="true"
connection.createStatement().executeQuery("SELECT * FROM T
WHERE a = '" + a_input + "'
and b = " + b_input + "
and c = " + c_input + "
and d = " + d_input + "
and e = " + e_input + ";")
問題:
制約を「緩める」オプションをユーザーに与えるため、a_input=""やb_input=""などの可能性があります...潜在的にすべてのフィールドa,b,c,d,eを空にすることができます ( "" ) フィールドが省略された場合、結果の応答に影響を与えるべきではありません。つまり、 が入力されていない場合、結果にはTRUEまたはFALSEcであるエントリが含まれる可能性があります。c
質問:
潜在的にすべてのフィールドが空になるか、一部だけになるか、まったく空になる可能性がある状況をカバーする 1 つのクエリを作成するにはどうすればよいですか?