我有一张如下表格:
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
子句中,这是要求
答案 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)