我有三个参数@startDate
,@endDate
,@name
。我需要创建一个像这样工作的查询。
@startDate
不为空,WHERE @startDate <= time
@endDate
不为空,请添加WHERE @endDate >= time
@name
不为空,请添加WHERE name LIKE @name
这就是我想要做的......这就是我写过的糟糕代码。
ALTER blahblah...
@startDate varchar(10),
@endDate varchar(10),
@name varchar(7)
AS
BEGIN
SELECT *
FROM st.TB_RETENTION
WHERE
CASE WHEN @startDate != '' THEN @startDate <= time AND
CASE WHEN @endDate != '' THEN @endDate >= time AND
CASE WHEN @GameCode != '' THEN name LIKE @name
END
我认为我非常接近......但不确定如何添加AND条件...对我有什么建议吗? :(
答案 0 :(得分:2)
你的初步描述实际上几乎是正确的:
where (@startDate is null or @startDate <= time)
and (@endDate is null or @endDate >= time)
and (@gameCode is null or name like @name)