我正在使用 SQL Server 2016,我必须将动态值传递给
IN
参数。
因此,我使用
SPLIT_STRING()
函数从给定的逗号分隔字符串返回项目表。如果我将这样的值 (4,6,8)
传递给 @Cylinders
参数,它会返回所有记录。
WHERE CarCylinders IN (SELECT value FROM STRING_SPLIT(@Cylinders, ','))
但是我有一个要求,我想将
Null
值传递给 @Cylinder
参数。因此该查询返回所有记录并忽略条件。
我不想使用动态SQL解决方案,因为查询非常复杂并且有超过20个输入参数。
只需使用
AND
/OR
逻辑:
WHERE @Cylinders IS NULL
OR CarCylinders IN (SELECT value FROM STRING_SPLIT(@Cylinders, ','))