有人可以帮我解决这个SQL查询的语法问题吗?我不是很有经验,也不确定如何去做。这是我到目前为止所拥有的。
SELECT ... WHERE (@MyVariable IS NULL OR [MyVariable] <= (CAST(@MyVariable as NUMERIC)))
我真正需要的是能够选择[MyVariable]所在的所有行&lt; = @MyVariable但是还有2个文本选择MyVariable可能在这种情况下它应该总是选择行。如果没有出现投射错误,你怎么做?
答案 0 :(得分:2)
我认为你需要做几次扭曲才能让它发挥作用..但我认为使用ISNUMERIC结合一个案例陈述就可以解决问题:
SELECT ... WHERE
@MyVariable IS NULL OR
ISNUMERIC(@MyVariable) = 0 OR
[MyVariable] < CASE
WHEN IsNumeric(@MyVariable) = 1
THEN CAST(@MyVariable as NUMERIC)
ELSE 0 -- if you have negatives in your db go to max negative
END