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)
我有以下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)