Sql server 在WHERE子句中添加IF条件,以便仅在特定情况下添加AND。在其他情况下,跳过“和”部分
我正试着做这样的运动。这是一个示例代码,因为我无法提供整个存储过程 我从表中获取一个值,同时还获取@children作为SP的参数。仅当@children中的值大于1时,我才希望运行AND条件。是否可以在SQL Server 2008中的WHERE子句中添加IF条件?如何实现以下目标?从逻辑上讲,以下是我想要实现的情况。如果您有任何问题,请让我知道,这样我可以提供更多的信息Sql server 在WHERE子句中添加IF条件,以便仅在特定情况下添加AND。在其他情况下,跳过“和”部分,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我正试着做这样的运动。这是一个示例代码,因为我无法提供整个存储过程 我从表中获取一个值,同时还获取@children作为SP的参数。仅当@children中的值大于1时,我才希望运行AND条件。是否可以在SQL Server 2008中的WHERE子句中添加IF条件?如何实现以下目标?从逻辑上讲,以下是我想要实现的情况。如果您有任何问题,请让我知道,这样我可以提供更多的信息 Select empId, empDesignation, empSalary, hasChildren from Emp
Select empId, empDesignation, empSalary, hasChildren from Employee Where empDesignation = 'Manager'
IF (@children > 2 )
{
AND hasChildren = 1
}
您可以将组合查询与AND或OR运算符一起使用:
Select empId, empDesignation, empSalary, hasChildren
from Employee
Where empDesignation = 'Manager'
AND (@children < 2 OR hasChildren = 1)
在这种情况下,如果@children为1或更小,则只有条件@children<2有效,因此条件hasChildren=1永远不会被计算
另一方面,如果@children大于1,则条件@children<2无效,在这种情况下,将计算条件haschilds=1。您可以使用与and或运算符的组合查询:
Select empId, empDesignation, empSalary, hasChildren
from Employee
Where empDesignation = 'Manager'
AND (@children < 2 OR hasChildren = 1)
在这种情况下,如果@children为1或更小,则只有条件@children<2有效,因此条件hasChildren=1永远不会被计算
另一方面,如果@children大于1,则条件@children<2无效,在这种情况下,将计算条件haschilds=1。您可以使用与and或运算符的组合查询:
Select empId, empDesignation, empSalary, hasChildren
from Employee
Where empDesignation = 'Manager'
AND (@children < 2 OR hasChildren = 1)
在这种情况下,如果@children为1或更小,则只有条件@children<2有效,因此条件hasChildren=1永远不会被计算
另一方面,如果@children大于1,则条件@children<2无效,在这种情况下,将计算条件haschilds=1。您可以使用与and或运算符的组合查询:
Select empId, empDesignation, empSalary, hasChildren
from Employee
Where empDesignation = 'Manager'
AND (@children < 2 OR hasChildren = 1)
在这种情况下,如果@children为1或更小,则只有条件@children<2有效,因此条件hasChildren=1永远不会被计算
另一方面,@children大于1,则条件@children<2无效,在这种情况下,将对条件haschldren=1进行评估。使用case可以如下工作:
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND (
CASE
WHEN @children <= 2 THEN 1
WHEN @children > 2 AND hasChildren = 1 THEN 1
ELSE 0
END
) = 1
用例可以这样工作:
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND (
CASE
WHEN @children <= 2 THEN 1
WHEN @children > 2 AND hasChildren = 1 THEN 1
ELSE 0
END
) = 1
用例可以这样工作:
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND (
CASE
WHEN @children <= 2 THEN 1
WHEN @children > 2 AND hasChildren = 1 THEN 1
ELSE 0
END
) = 1
用例可以这样工作:
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND (
CASE
WHEN @children <= 2 THEN 1
WHEN @children > 2 AND hasChildren = 1 THEN 1
ELSE 0
END
) = 1
我试着用“CASE”来解决这个问题。但它不起作用。如果你们愿意的话,我明天就可以把整个代码放出来。我试着用“CASE”来解决这个问题。但它不起作用。如果你们愿意的话,我明天就可以把整个代码放出来。我试着用“CASE”来解决这个问题。但它不起作用。如果你们愿意的话,我明天就可以把整个代码放出来。我试着用“CASE”来解决这个问题。但它不起作用。如果你们愿意的话,我明天就可以把整个代码发布出来。目前我正在使用第二个解决方案。这个案子对我来说真的不管用-目前我正在使用第二种解决方案。这个案子对我来说真的不管用-目前我正在使用第二种解决方案。这个案子对我来说真的不管用-目前我正在使用第二种解决方案。这个案子对我来说真的不管用-