SQL Server:如果参数不为空并且一个条件为false,则选择全部

时间:2018-12-21 13:28:48

标签: sql sql-server tsql

我正在尝试通过下面的代码获取数据,该代码具有以下情况。

  1. ,如果@status = 0且日期不为null,则获取过滤数据。

  2. ,如果@status = 1且日期不为null,则选择所有数据。

  3. 当@status = 1且日期为null时,请选择所有数据。

     <?php 
        get_search_form();
     ?>
    

2 个答案:

答案 0 :(得分:2)

您所描述的逻辑是通过以下方式处理的:

where (@status = 0 and CreatedTime > @date) or
      (@status = 1) 

目前尚不清楚为什么要为此使用两个不同的变量。

答案 1 :(得分:0)

DECLARE @status INT = 0,
        @date DATETIME = '2018-12-01 09:48:34.343'


DECLARE @RQuery NVARCHAR(MAX)

SET @RQuery = ' WHERE 1 = 1 '

IF @status = 0 AND @date IS NOT NULL
BEGIN
    SET @RQuery =  @status + ' = 0 AND  CreatedTime ' + CAST(@date AS DATE)
END
ELSE IF @status = 1 AND @date IS NOT NULL
BEGIN
    SET @RQuery =  ''
END
ELSE IF @status = 1 AND @date IS  NULL
BEGIN
    SET @RQuery =  ''
END

DECLARE @RQueryFULL NVARCHAR(MAX)
SET @RQueryFULL = ''

SET @RQueryFULL = 'SELECT CreatedTime 
FROM AspNetUsers ' + @RQuery

EXEC @RQueryFULL
Try This