sql - 根据参数运行一个 where 子句条件

标签 sql sql-server database sql-server-2008

我有这样的查询

Select * from table1 
where col1 = true or col2 = false or 
case when @param <> 2 then col3 = col4 end 

where 中的最后一个条件是抛出错误

 Incorrect syntax near '<'

最佳答案

您不能使用 CASE 表达式来控制 SQL 中的执行流程。 CASE 是一个表达式,它只返回一个标量 值。

您可以改用以下谓词:

((@param <> 2 AND col3 = col4) OR (@param = 2))

因此,查询的 WHERE 子句将如下所示:

WHERE (col1 = true) OR (col2 = false) OR ((@param <> 2 AND col3 = col4) OR (@param = 2)) 

关于sql - 根据参数运行一个 where 子句条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44941610/

相关文章:

sql - 在 PL SQL 过程中从外部源检索 POST 数据

mysql - 以下场景需要哪些索引

sql - 数据分成多个组

sql - 如何识别 SQL Server 中依赖关系已损坏的 View ?

java - 如何指定一个字段,以便当我们查询时,使用该字段的 Joda LocalDate 或 LocalDateTime 值,将其映射到同一列?

php - 关于 SQL 结构和 JOIN 的建议?

mysql - 在 BETWEEN 子句中使用 SQL 子查询获取日期

c# - 通过 C# 查询时 SQL Server 2005 区分大小写

php - 使用 PHP 更新 MySQL

数据库优化 - 编码字段