Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何根据布尔参数调整我的选择_Sql_Sql Server_Parameters_Boolean - Fatal编程技术网

Sql 如何根据布尔参数调整我的选择

Sql 如何根据布尔参数调整我的选择,sql,sql-server,parameters,boolean,Sql,Sql Server,Parameters,Boolean,我正在创建一个存储过程,它将根据布尔标志@status返回用户列表,如下所示: 如果未通知状态,则查询必须返回所有用户 如果“状态”传递为true,则查询必须仅返回列LastAccess为notnull的用户 如果status被传递为false,则查询必须返回用户LastAccess列为null 此列的类型为datetime 我可以处理第一个用例,在下面代码的最后一行中,@状态为null: CREATE PROCEDURE selectUsersByStatus ( @userId

我正在创建一个存储过程,它将根据布尔标志
@status
返回用户列表,如下所示:

  • 如果未通知
    状态
    ,则查询必须返回所有用户
  • 如果“状态”传递为
    true
    ,则查询必须仅返回列
    LastAccess
    notnull
    的用户
  • 如果
    status
    被传递为false,则查询必须返回用户
    LastAccess
    列为
    null
此列的类型为
datetime


我可以处理第一个用例,在下面代码的最后一行中,
@状态为null

CREATE PROCEDURE selectUsersByStatus (
    @userId int,
    @status bit     
    )

AS

SELECT * from users

WHERE users.id = @userId
and (@status is null or CASE @status WHEN 1 THEN (users.LastAccess is not null) ELSE (users.LastAccess is null))
然而,该行的其余部分显然不起作用。如何进行

谢谢

简单一点:

CREATE PROCEDURE selectUsersByStatus (
    @userId int,
    @status bit     
    )

AS

SELECT * from users

WHERE users.id = @userId
and (@status is null OR (@status = 1 AND users.LastAccess IS NOT NULL) OR (@status = 0 AND users.LastAccess IS NULL))