大まかに言えば、これは些細なことのように思えますが、私は数時間頭を悩ませていたことがわかりました。
状況:
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 つのクエリを作成するにはどうすればよいですか?