Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “我可以吗?”;在;仅用于;其中;条款_Sql_Sql Server - Fatal编程技术网

Sql “我可以吗?”;在;仅用于;其中;条款

Sql “我可以吗?”;在;仅用于;其中;条款,sql,sql-server,Sql,Sql Server,“IN”可以用在除“WHERE”以外的其他子句中吗?例如,在iif中: iif((([Date] IS NOT NULL) AND ([Result] in ('PassedWithHonors', 'Passed')), 'Passed', 'Failed))) 谢谢。试试这个: case when [Date] IS NOT NULL AND [Result] in ('PassedWithHonors', 'Passed') then 'Passed' else 'F

“IN”可以用在除“WHERE”以外的其他子句中吗?例如,在iif中:

iif((([Date] IS NOT NULL) AND ([Result] in ('PassedWithHonors', 'Passed')), 'Passed', 'Failed)))
谢谢。

试试这个:

case when [Date] IS NOT NULL AND [Result] in ('PassedWithHonors', 'Passed')
     then 'Passed'
     else 'Failed'
end
试试这个:

case when [Date] IS NOT NULL AND [Result] in ('PassedWithHonors', 'Passed')
     then 'Passed'
     else 'Failed'
end

您可以在任何可以放置布尔表达式的地方放置
。其中一个地方是
WHERE
子句,但是布尔表达式几乎可以位于查询中的任何位置。例如,在
ON
子句中(如@jarlh所述),或在
选择
中(例如)在
案例
IIF
中具有
子句(但仅限于这些功能)

它甚至可以放在
IF
语句中,作为逻辑流操作的一部分。例如:

IF @i IN (1,2) BEGIN
    SELECT TOP 1 * FROM MyTable;
END ELSE IF @i in (3,4) BEGIN
    SELECT TOP 1 * FROM YourTable;
END

所以,正如我在开始时所说的,在
中的
可以放在任何可以放置布尔表达式的地方。

你可以在
中放置一个
,在任何可以放置布尔表达式的地方。其中一个地方是
WHERE
子句,但是布尔表达式几乎可以位于查询中的任何位置。例如,在
ON
子句中(如@jarlh所述),或在
选择
中(例如)在
案例
IIF
中具有
子句(但仅限于这些功能)

它甚至可以放在
IF
语句中,作为逻辑流操作的一部分。例如:

IF @i IN (1,2) BEGIN
    SELECT TOP 1 * FROM MyTable;
END ELSE IF @i in (3,4) BEGIN
    SELECT TOP 1 * FROM YourTable;
END

所以,正如我在开始时所说的,
中的
可以放在任何你可以放布尔表达式的地方。

你可以放在这里和那里,例如CASE,ON,等等你可以试试。所有这些括号都不利于可读性。“你可以试试看”。。。你赢得了年度最佳答案!拍手,拍手。。。如果我提出这个问题,这意味着我已经尝试过了,但无论如何,谢谢你的帮助。在与我的回答不同的地方,我建议不要在你的
WHERE
子句中使用
IIF
;您可能会使查询不可搜索。如果您只是寻找一个通过的
值和
[date]
没有非
空的
值,那么只需执行:
和[date]不为空并导致('passedWithOnors','Passed')
。不需要
IIF
。你可以把它放在这里和那里,例如CASE、ON等等。你可以试试。所有这些括号都不利于可读性。“你可以试试看”。。。你赢得了年度最佳答案!拍手,拍手。。。如果我提出这个问题,这意味着我已经尝试过了,但无论如何,谢谢你的帮助。在与我的回答不同的地方,我建议不要在你的
WHERE
子句中使用
IIF
;您可能会使查询不可搜索。如果您只是寻找一个通过的
值和
[date]
没有非
空的
值,那么只需执行:
和[date]不为空并导致('passedWithOnors','Passed')
。不需要
IIF
。非常感谢,这正是我想要的!在教程中,他们总是在
where
子句中使用它,所以我不确定。非常感谢,这正是我要找的!在教程中,他们总是在
where
子句中使用它,所以我不确定