select
id,
starttime,
endtime,
name
from
table1
where
id != 0
and starttime >= @startdate and endtime <= @enddate
在上面的查询中,如果@startdate
和@enddate
参数为null而不使用if else,我该如何执行?
starttime >= @startdate and endtime <= @enddate
此条件应检查@startdate和@enddate是否为空。否则就不会检查。
对此有何建议?
答案 0 :(得分:1)
您只需检查变量是否为null,从而根据需要返回true
为每个参数单独执行此操作
where (startdate >= @startdate or @startdate is null)
and (enddate <= @enddate or @enddate is null)
如果其中一个为空
,您也可以“忽略”该条件where ((startdate >= @startdate and enddate <= @enddate)
or @startdate is null
or @enddate is null)
答案 1 :(得分:1)
在ISNULL
条件下,您只需COALESCE
或where
个功能。
select id,
starttime,
endtime,
name
from table1
where
id != 0 and
starttime >= ISNULL(@startdate,starttime) and endtime <= ISNULL(@enddate,endtime)
答案 2 :(得分:0)
添加额外条件:
and @startdate is not null and @enddate is not null
答案 3 :(得分:0)
试试这个:
为此 应检查@startdate和@enddate是否为空。否则它将不会检查使用第一个答案
如果@startdate
为空,则返回true
并提供所有结果
select id,
starttime,
endtime,
name
from table1
where
id != 0 and
(starttime >= @startdate or @startdate is null )
and
(endtime <= @enddate or @enddate is null)
或
select id,
starttime,
endtime,
name
from table1
where
id != 0 and
(starttime >= @startdate and @startdate is NOT null )
and
(endtime <= @enddate and @enddate is NOT null)
答案 4 :(得分:0)
尝试使用OR来检查:
where
(id != 0)
and
(
(@startdate IS NULL) OR (@enddate IS NULL)
OR
(starttime >= @startdate and endtime <= @enddate)
)