如果选择catgory作为" ALL"列出所有行。

时间:2017-03-10 11:54:49

标签: sql sql-server

我有一张如下表格:

Select category,blogname from table 


cat1   blog1  
cat2   blog2
cat2   blog3
cat4   blog4
cat5   blog5

现在,如果我写一个查询

select * from table where category = "cat1" 

我只获得" cat1"

的行
select * from table where category = "cat2" 

我只获得" cat2"

的行

如果我想列出所有记录怎么办?

select * from table where category = "ALL" 

我得到没有行,但我需要所有行。

我不会写if条件,我希望条件只在where子句中,这是要求

5 个答案:

答案 0 :(得分:6)

我想你想要这样的东西:

where (@category = 'ALL' or category = @category)

变量@category将具有您要查找的值。您可以看到如果将值放入:

会发生什么
where ('ALL' = 'ALL' or category = 'ALL')
where ('cat1' = 'ALL' or category = 'cat1')

答案 1 :(得分:0)

假设您所拥有的实际上是以@CategoryParameter为参数的参数化查询,您需要做的是:

SELECT *
FROM table
WHERE category = @CategoryParameter
  OR category IS NULL;

答案 2 :(得分:0)

您应该将您要查找的值的值放入变量,然后........

Declare @searchCat Varchar(50) = 'All';

select * from 
table 
where 
  category = @searchCat
  or @searchCat = 'All';

答案 3 :(得分:0)

SELECT * 从表 在哪里类别'cat%'

如果您有逻辑名称,这是一个选项:cat1 ... to catN

答案 4 :(得分:0)

select * from table where (@category = 'ALL' or category = @category)