使用 STRING_SPLIT 将动态参数传递到 IN 参数

问题描述 投票:0回答:1

我正在使用 SQL Server 2016,我必须将动态值传递给

IN
参数。

因此,我使用

SPLIT_STRING()
函数从给定的逗号分隔字符串返回项目表。如果我将这样的值
(4,6,8)
传递给
@Cylinders
参数,它会返回所有记录。

WHERE CarCylinders IN (SELECT value FROM STRING_SPLIT(@Cylinders, ',')) 

但是我有一个要求,我想将

Null
值传递给
@Cylinder
参数。因此该查询返回所有记录并忽略条件。

我不想使用动态SQL解决方案,因为查询非常复杂并且有超过20个输入参数。

sql-server t-sql split where-clause
1个回答
1
投票

只需使用

AND
/
OR
逻辑:

WHERE @Cylinders IS NULL
OR CarCylinders IN (SELECT value FROM STRING_SPLIT(@Cylinders, ','))
© www.soinside.com 2019 - 2024. All rights reserved.