SQL语句中的条件

时间:2015-08-26 10:33:41

标签: sql sql-server-2014

我在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'是我将给出的过程中的参数。

问题:如何创建满足我条件的查询?

3 个答案:

答案 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)