0

假设我有一个屏幕,用户选择不同的选项来对下面给出的网格中的数据进行排序,数据是通过 jQuery 从数据库中异步获取的。

当用户选择时,他需要查看user数据status=1

SELECT * FROM user WHERE status=1;

对于 2、3、4,同样可以传递一个变量。

但是当用户没有选择任何东西时,它应该返回所有users. 我可以在将获取ALL记录的查询中传递的表达式或关键字也是如此,例如:

SELECT * FROM user WHERE status=ANYTHING; -- EVERYTHING, ALL, ANY

我不想为每个案例编写不同的查询,这样效率不高,而且案例数量也很多,因为上面的例子只是一个假设的例子来解释我的情况,实际情况有点复杂。

4

4 回答 4

3
SELECT * FROM user WHERE @status is null Or status = @status
于 2013-10-28T12:26:32.793 回答
2

使用 ISNULL() 或 COALESCE() 函数。在所有记录的参数中传递 NULL 值并编写查询,例如

SELECT * FROM user WHERE status=ISNULL(@status,status)

更新:上面的查询不会返回空记录,所以如果你的表有空记录,那么你需要像 Kaf 提到的那样编写查询

SELECT * FROM user WHERE @status is null Or status = @status
于 2013-10-28T12:21:08.250 回答
0

您可以为查询提供第二个参数,以便您的 where 子句读取

WHERE STATUS = @Status or @RetrieveAll=1

也许

WHERE Coalesce(STATUS, 0) = @Status or @RetrieveAll=1

于 2013-10-28T12:50:10.367 回答
0

您可以使用此查询:

SELECT * FROM userWHERE status!='' or status!= null
OR
SELECT * FROM userWHERE statusIN (1,2,3) // 所有状态值

于 2013-10-29T09:18:15.537 回答