我在SELECT
下面进行了查询:
select * from table t
Where t.policy_date = @var1 and t.insurer_id = @var2
此处@var1
可以为空,@var2
也可以为空。如果@var1
为空,则条件必须仅为t.insurer_id = @var2
。如果@var2
为空,则条件必须为t.policy_date = @var1
。或者它们都可以是空的并且都不是空的。
'@ var1'和'@ var2'是我将给出的过程中的参数。
问题:如何创建满足我条件的查询?
答案 0 :(得分:4)
使用此
select * from table t
Where (@var1 IS NULL OR t.policy_date = @var1) and (var2 IS NULL OR t.insurer_id = @var2)
当@var
为null时,where子句的第一部分变为true
所以我们只有第二部分要评估,反之亦然。
注意:如果您的意思是''
为“空”,请使用@var = ''
代替@var IS NULL
。
答案 1 :(得分:2)
select * from table t
where (@var1 is null or t.policy_date = @var1)
and (@var2 is null or t.insurer_id = @var2)
答案 2 :(得分:1)
SELECT *
FROM table t
WHERE t.policy_date = COALESCE(@var1, t.policy_date)
AND t.insurer_id = COALESCE(@var2, t.insurer_id)