我只是想知道是否可以排除或包含查询的部分内容。 通过将变量声明为是或否。这将使事情变得更容易,然后声明每个值,例如' IN'子句。
下面说明的例子
起点
SELECT
E.Id, E.Name
FROM
Employees AS E
WHERE
E.Email LIKE '%@company.com'
AND E.Id NOT IN ('1001,1002,1009,1115,2000')
AND E.Team = 0
理想情况
DECLARE @Includemanagers nvarchar (255) = 'No'
SELECT
E.Id, E.Name
FROM
Employees AS E
WHERE
E.Email LIKE '%@company.com'
AND CASE
WHEN @Includemanagers = 'No'
THEN E.Id NOT IN ('1001,1002,1009,1115,2000')
END
AND E.Team = 0
我知道语法不正确。我怀疑这是否可能。
将来提供两个正确的答案供参考。
如果您不想包含PRINT语句
,请使用@Jamiec的答案如果要包含print语句
,请使用@Prdp的答案
答案 0 :(得分:2)
这是一个简单的class Bar extends Component {
constructor() {
this.styles = StyleSheet.create({
...
});
}
render: {
return (
/* use this.styles here */
);
}
}
条件
OR
(请注意,引用了您的DECLARE @Includemanagers nvarchar (255) = 'No'
SELECT E.Id, E.Name
FROM Employees AS E
WHERE E.Email LIKE '%@company.com'
AND (@IncludeManagers = 'yes'
OR (@IncludeManagers = 'no' AND E.Id NOT IN (1001,1002,1009,1115,2000 ))
AND E.Team = 0
子句,但这不起作用。在此答案中进行了更正)
答案 1 :(得分:1)
使用条件声明:IF
IF @Includemanagers <> 'No'
BEGIN
PRINT 'Managers are included in this query'
SELECT E.id,
E.NAME
FROM employees AS E
WHERE E.email LIKE '%@company.com'
AND E.team = 0
END
ELSE
BEGIN
SELECT E.id,
E.NAME
FROM employees AS E
WHERE E.email LIKE '%@company.com'
AND E.id NOT IN ( 1001, 1002, 1009, 1115, 2000 )
AND E.team = 0
END
答案 2 :(得分:0)
我不确定这是否与您完全相同,但您可以使用CASE函数执行此类操作:
DECLARE @Includemanagers nvarchar (255) = 'No'
SELECT
E.Id, E.Name
FROM
Employees AS E
WHERE
E.Email LIKE '%@company.com'
AND 1 = CASE
WHEN @Includemanagers = 'No'
CASE WHEN E.Id NOT IN (1001,1002,1009,1115,2000) THEN 1 ELSE 0 END
ELSE 1
END
AND E.Team = 0