在SQL
查询中,如果输入值为0,则将输入作为该列的所有值,否则仅考虑输入值;
假设输入city_num = 0
然后对所有城市编号(即1到50)运行查询,否则对输入city_num
进行查询,说5。如何编码?
if the City_num = 0 then Select * from emp where City_num in 1to 50
if the City_num = 5 then Select * from emp where City_num = 5
;
答案 0 :(得分:1)
添加以下WHERE
语句:
WHERE city_num = ? OR 0 = ?
如果您通过0
,则等效于:
WHERE city_num = 0 OR 0 = 0
,由于0 = 0
始终为TRUE
,因此它将获取所有行。
如果您通过5
,则等效于:
WHERE city_num = 5 OR 0 = 5
,由于0 = 5
始终为FALSE
,因此它将仅获取city_num = 5
的行。
答案 1 :(得分:0)
尝试一下:
DECLARE @input INT = 2;
SELECT * FROM TABLE1
WHERE (city_num= @input AND @input > 0) OR @input = 0;
我假设city_num是整数。如果是varchar,则进行较小的修正