假设我有一个变量@hasAge
,其值可以是1
或0
。
我想用where子句编写SELECT查询,如果@var
为1,我想检查某些条件,否则我不想检查那个条件。
像这样:
SELECT * FROM My_Table mt
WHERE mt.name = 'abcd'
AND
IF(@hasAge)
mt.age > 10
所以我想比较my.age> 10仅当@hasAge
为1
我不希望有这样的2个不同的选择语句:
if(@hasAge)
BEGIN
SELECT * FROM My_Table mt
WHERE mt.name = 'abcd'
AND
mt.age > 10
ELSE
BEGIN
SELECT * FROM My_Table mt
WHERE mt.name = 'abcd'
END
答案 0 :(得分:1)
使用此:
WHERE mt.name = 'abcd'
AND (@hasAge = 0 OR mt.age > 10)
这意味着如果@hasAge = 0
那么OR之后的部分是无关紧要的,如果@hasAge <> 0
则是OR之后的部分被应用。