case 作查询条件问题
我想这样设定查询条件:
@iPrice=1 那么价格在0-500之间
@iPrice=2 那么价格在500-1000之间
@iPrice=3 那么价格在1000以上
SELECT GoodsName FROM GoodsData
case when @iPrice=1 then SoftPrice> 0 and SoftPrice <501 when @iPrice=2 then SoftPrice <1001 and SoftPrice> 500 when @iPrice=3 then SoftPrice> 1000 end
结果出现提示: '> '附近有语法错误,请问是怎么回事?难道一定要用 if else ?
------解决方案--------------------貌似不能做查询条件吧,不如这样写:
SELECT GoodsName FROM GoodsData
where @iPrice=1 and SoftPrice betweem 0 and 500
or @iPrice=2 and SoftPrice between 501 and 1000
or @iPrice=3 and SoftPrice > 1000
或者干脆这样写:
SELECT GoodsName FROM GoodsData where @iPrice=1 and SoftPrice betweem 0 and 500
union all
SELECT GoodsName FROM GoodsData where @iPrice=2 and SoftPrice between 501 and 1000
union all
SELECT GoodsName FROM GoodsData where @iPrice=3 and SoftPrice > 1000
------解决方案--------------------用case也是可以的,case 用于句中时只是作为函数用,必然是一个值,值能用的地方它才能用
SELECT GoodsName FROM GoodsData where
SoftPrice between (case @iPrice when 1 then 1 when 2 then 501 else 1001 end) and (case @a when 1 then 500 when 1000 then 3 else 999999 end)
但coolingpipe(冷箫轻笛)的第一种方法最好(0要改为1)