Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 server 如果SQL Server中的筛选值为空,如何在条件下筛选记录?_Sql Server - Fatal编程技术网

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

我想在两个条件下筛选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 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,否则我们将得到它

//这里我想要条件,我尝试了这个,但是有一些语法错误
语法错误是什么。还显示抛出错误的查询。
//这里我想要条件,我尝试了这个,但是有一些语法错误
语法错误是什么。还显示引发错误的查询。