SQL 语句中的条件

Condition in SQL statement

我有以下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' 是我将给出的程序中的参数。

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

使用这个

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 因此我们只需要计算第二部分,反之亦然。

注意:如果您用[=24=表示'',请使用@var = ''而不是@var IS NULL

select * from table t
where (@var1 is null or t.policy_date = @var1)
  and (@var2 is null or t.insurer_id = @var2)
SELECT *
FROM table t
WHERE t.policy_date = COALESCE(@var1, t.policy_date)
AND t.insurer_id = COALESCE(@var2, t.insurer_id)