Sql where子句中的Case when then
如果满足了其中一个条件,如何在Sql where子句中的Case when then,sql,sql-server,Sql,Sql Server,如果满足了其中一个条件,如何在where子句中使用case when?我需要的是,如果一个条件满足以下条件,在满足第一个条件后,只有一个条件要执行,它将不会执行。当第一个条件满足时,case语句将立即停止进一步计算 SELECT TOP 100 ProjType, projCost, InvestAmount, ProjBuildSize FROM dbo.Project WHERE ( CASE WHEN projCost > 0 then projCost
where
子句中使用case when
?我需要的是,如果一个条件满足以下条件,在满足第一个条件后,只有一个条件要执行,它将不会执行。当第一个条件满足时,case语句将立即停止进一步计算
SELECT TOP 100 ProjType, projCost, InvestAmount, ProjBuildSize
FROM dbo.Project
WHERE
(
CASE
WHEN projCost > 0 then projCost end >= 10000000
WHEN InvestAmount IS NOT NULL then InvestAmount end >= 12000000
WHEN ProjBuildSize > 0 then ProjBuildSize ELSE >= 5000
END
)
您不需要使用
情况,当这里出现时,一个简单的x或y或z就足够了
此外,如果InvestAmount
是一个可为空的列,则要检查是否为空,必须执行InvestAmount不是空的而不是InvestAmount null
SELECT TOP 100 ProjType,projCost,InvestAmount,ProjBuildSize
FROM dbo.Project
WHERE
(projCost > 0 AND projCost >= 10000000)
OR (InvestAmount IS NOT NULL AND InvestAmount >= 12000000)
OR (WHEN ProjBuildSize > 0 AND ProjBuildSize >= 5000)
您不需要使用情况,当这里出现时,一个简单的x或y或z就足够了
此外,如果InvestAmount
是一个可为空的列,则要检查是否为空,必须执行InvestAmount不是空的而不是InvestAmount null
SELECT TOP 100 ProjType,projCost,InvestAmount,ProjBuildSize
FROM dbo.Project
WHERE
(projCost > 0 AND projCost >= 10000000)
OR (InvestAmount IS NOT NULL AND InvestAmount >= 12000000)
OR (WHEN ProjBuildSize > 0 AND ProjBuildSize >= 5000)
你可以用这种简单的方法来实现它
SELECT TOP 100 ProjType,projCost,InvestAmount,ProjBuildSize FROM dbo.Project
WHERE (projCost <= 0 OR projCost >= 10000000)
AND (projCost <= 0 And ((InvestAmount is null) OR InvestAmount >= 12000000))
AND ((InvestAmount is null And projCost <= 0) And ((ProjBuildSize <= 0 ) OR ProjBuildSize >= 5000))
从dbo.Project中选择前100名项目类型、项目成本、投资金额、项目构建大小
其中(项目成本=10000000)
和(项目成本=12000000))
和((InvestAmount为空,projCost您可以通过这种简单的方式实现它
SELECT TOP 100 ProjType,projCost,InvestAmount,ProjBuildSize FROM dbo.Project
WHERE (projCost <= 0 OR projCost >= 10000000)
AND (projCost <= 0 And ((InvestAmount is null) OR InvestAmount >= 12000000))
AND ((InvestAmount is null And projCost <= 0) And ((ProjBuildSize <= 0 ) OR ProjBuildSize >= 5000))
从dbo.Project中选择前100名项目类型、项目成本、投资金额、项目构建大小
其中(项目成本=10000000)
和(项目成本=12000000))
和((InvestAmount为null,projCost您可以在where
子句中使用case
语句:
SELECT TOP 100 ProjType, projCost, InvestAmount, ProjBuildSize
FROM dbo.Project
WHERE
(
CASE
WHEN projCost > 0 AND projCost >= 10000000 then 1
WHEN InvestAmount IS NOT NULL AND InvestAmount >= 12000000 then 1
WHEN ProjBuildSize > 0 AND ProjBuildSize >= 5000 then 1
ELSE 0
END
) = 1
如果满足了条件,则case
将返回1
,并且where
子句条件将得到满足,否则case
将返回0您可以在where
子句中使用类似的case
语句:
SELECT TOP 100 ProjType, projCost, InvestAmount, ProjBuildSize
FROM dbo.Project
WHERE
(
CASE
WHEN projCost > 0 AND projCost >= 10000000 then 1
WHEN InvestAmount IS NOT NULL AND InvestAmount >= 12000000 then 1
WHEN ProjBuildSize > 0 AND ProjBuildSize >= 5000 then 1
ELSE 0
END
) = 1
如果满足了条件,则案例
将返回1
,并且where
子句条件将得到满足,否则案例
将返回0您想要的或
条件?仅供参考:InvestAmount NULL
将无法按您的意愿工作,它将应该是InvestAmount not NULL
你想要一个或条件吗?仅供参考:InvestAmount NULL
不会按你的意愿工作,它应该是InvestAmount not NULL
这回答了你的问题吗?如果你需要任何帮助,请告诉我@北斗安我需要的是如果第一个条件之后只有一个条件需要执行条件满足我刚刚更新了我的答案,请看一看@Beiduoan这个答案是否回答了你的问题?如果你需要任何帮助@Beiduoan,请告诉我。我需要的是如果在第一个条件满足后只有一个条件需要执行。我刚刚更新了我的答案,请看一看@Beiduoan。我需要的是如果只有一个条件需要执行满足第一个条件后执行我需要的是如果满足第一个条件后只有一个条件要执行我需要的是如果满足第一个条件后只有一个条件要执行met@beiduoan当满足
条件时,案例
语句会自动停止计算,所以我写的查询将起作用。不客气,请随意投票,如果有帮助,请接受这个答案。我需要的是,在第一个条件被满足后,是否只有一个条件需要执行met@beiduoan当满足
条件时,case
语句会在一满足条件时自动停止计算,因此查询写出来会有用的。不客气,请随意投票,如果有帮助,请接受这个答案。