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

我正在使用SQL Server 2016,并且必须将动态值传递给IN参数。

由于这个原因,我正在使用SPLIT_STRING()函数,该函数从给定的逗号分隔的字符串中返回项目表。如果我将类似(4,6,8)的值传递给@Cylinders参数,它将返回所有记录。

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

但是我有一些要求将Null值传递给@Cylinder参数。这样该查询将返回所有记录,并忽略条件。

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

kx287973135 回答:使用STRING_SPLIT将动态参数传递给IN参数

只需使用AND / OR逻辑:

where @Cylinders is null or CarCylinders IN (SELECT value FROM STRING_SPLIT(@Cylinders,',')) 
本文链接:https://www.f2er.com/3055619.html

大家都在问