如何在不使用 CASE 的情况下有条件地添加 WHERE 子句
How to add a WHERE clause conditionally without using CASE
我想在存储过程的 WHERE 部分有条件地添加一个子句,但我知道使用 CASE 真的很糟糕。这基本上是我正在尝试做的事情:
@StartDate
@EndDate
@ClientID
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
--If @ClientID > 0 then add
AND field_1 = @ClientID
有什么建议吗?
这里是:
...
Where datefield_3 Between @StartDate AND @EndDate
AND (field_1 > 0 OR field_1 = @ClientID)
@StartDate
@EndDate
@ClientID
IF ClientID>0
BEGIN
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
AND field_1 = @ClientID
END
ELSE
BEGIN
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
END
简单如:
@StartDate
@EndDate
@ClientID
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
AND (@ClientID <= 0 OR field_1 = @ClientID)
如果@ClientID <= 0,则不评估附加条件。 IE。如果 @ClientID > 0,则评估 field_1 = @ClientID
!
我想在存储过程的 WHERE 部分有条件地添加一个子句,但我知道使用 CASE 真的很糟糕。这基本上是我正在尝试做的事情:
@StartDate
@EndDate
@ClientID
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
--If @ClientID > 0 then add
AND field_1 = @ClientID
有什么建议吗?
这里是:
...
Where datefield_3 Between @StartDate AND @EndDate
AND (field_1 > 0 OR field_1 = @ClientID)
@StartDate
@EndDate
@ClientID
IF ClientID>0
BEGIN
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
AND field_1 = @ClientID
END
ELSE
BEGIN
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
END
简单如:
@StartDate
@EndDate
@ClientID
SELECT field_1, field_2, datefield_3
from tblTable
Where datefield_3 Between @StartDate AND @EndDate
AND (@ClientID <= 0 OR field_1 = @ClientID)
如果@ClientID <= 0,则不评估附加条件。 IE。如果 @ClientID > 0,则评估 field_1 = @ClientID
!