性別と手という 2 つの変数に依存する SQLite クエリがあります。これらはそれぞれ 3 つの値を持つことができます。2 つは実際に何かを意味し (つまり、男性/女性と左/右)、3 番目は「すべて」です。変数の値が「すべて」の場合、その列の特定の値が何であるかは気にしません。
変数を変更するだけで、単一のクエリでこの機能を実現できますか? ワイルドカードまたは don't care 演算子を探しましたが、この状況では機能しない % 以外は見つかりませんでした。
もちろん、多数の if ステートメントを作成し、ケースごとに異なるクエリを使用することもできますが、それはあまりエレガントではありません。
コード:
select_sql = """ SELECT * FROM table
WHERE (gender = ? AND hand = ?)
"""
cursor.execute(select_sql, (gender_var, hand_var))
つまり、このクエリは、gender_val = 'male' および hand_var = 'left' の場合は機能しますが、gender_val または hand_var = 'all' の場合は機能しません。