如果IF条件满足,则在WHERE子句中进行AND操作

时间:2018-06-05 14:36:35

标签: sql sql-server database

假设我有一个变量@hasAge,其值可以是10

我想用where子句编写SELECT查询,如果@var为1,我想检查某些条件,否则我不想检查那个条件。 像这样:

SELECT * FROM My_Table mt
WHERE mt.name = 'abcd'
AND
IF(@hasAge)
mt.age > 10 

所以我想比较my.age> 10仅当@hasAge1

时才会生效

我不希望有这样的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

1 个答案:

答案 0 :(得分:1)

使用此:

WHERE mt.name = 'abcd'
AND (@hasAge = 0 OR mt.age > 10)

这意味着如果@hasAge = 0那么OR之后的部分是无关紧要的,如果@hasAge <> 0则是OR之后的部分被应用。