Sql server 如果SQL Server中的筛选值为空,如何在条件下筛选记录?
我想在两个条件下筛选SQL Server中的记录。我正在为此编写一个存储过程 这是我的问题Sql server 如果SQL Server中的筛选值为空,如何在条件下筛选记录?,sql-server,Sql Server,我想在两个条件下筛选SQL Server中的记录。我正在为此编写一个存储过程 这是我的问题 // Parameters @carNo AS INT @carEngineNo AS INT = null // this is optional Select * From CarLog //Some Joins Where CarLog.car_no = carNo // here I want condition, I tried this but there is
// Parameters
@carNo AS INT
@carEngineNo AS INT = null // this is optional
Select *
From CarLog
//Some Joins
Where
CarLog.car_no = carNo
// here I want condition, I tried this but there is some syntax error
And CASE
When @carEngineNo IS NOT NULL THEN CarLog.engine_no= carEngineNo
WHEN @carEngineNo IS NULL THEN CarLog.engine_no = CarLog.engine_no
END
我该怎么做?这很简单
或
...
AND (@carEngineNo is NULL or CarLog.engine_no = @carEngineNo)
考虑将选项(重新编译)
附加到查询中,因为实际参数集可能不同
您的案例
已修复:
AND CarLog.engine_no =
CASE
When @carEngineNo IS NOT NULL THEN @carEngineNo
WHEN @carEngineNo IS NULL THEN CarLog.engine_no
END
备选方案:
AND CarLog.engine_no = IsNull(@carEngineNo, CarLog.engine_no)
这很简单或
...
AND (@carEngineNo is NULL or CarLog.engine_no = @carEngineNo)
考虑将选项(重新编译)
附加到查询中,因为实际参数集可能不同
您的案例
已修复:
AND CarLog.engine_no =
CASE
When @carEngineNo IS NOT NULL THEN @carEngineNo
WHEN @carEngineNo IS NULL THEN CarLog.engine_no
END
备选方案:
AND CarLog.engine_no = IsNull(@carEngineNo, CarLog.engine_no)
在关键词中使用
isnull(@carEngineNo,-1) in (-1, CarLog.engine_no)
如果@carEngineNo为null,那么它将为-1,否则我们将得到它 在关键字中使用
isnull(@carEngineNo,-1) in (-1, CarLog.engine_no)
如果@carEngineNo为null,那么它将为-1,否则我们将得到它 //这里我想要条件,我尝试了这个,但是有一些语法错误
语法错误是什么。还显示抛出错误的查询。//这里我想要条件,我尝试了这个,但是有一些语法错误
语法错误是什么。还显示引发错误的查询。