SQL在何处导致问题

SQL在何处导致问题,sql,Sql,我有一个where的以下部分-注意@TRUCK是存储过程的输入参数: WHERE TRUCK = COALESCE(@TRUCK, ATP.TRUCK) AND ... 我想通过考试 SELECT value from dbo.fn_split(@TRUCK, '~') 代替@TRUCK,因为我想传递一个~分隔的列表 我尝试使用: WHERE TRUCK IN (COALESCE(SELECT value from dbo.fn_split(@TRUCK, '~')),ATP.TRUCK

我有一个where的以下部分-注意
@TRUCK
是存储过程的输入参数:

WHERE TRUCK = COALESCE(@TRUCK, ATP.TRUCK) AND  ...
我想通过考试

SELECT value from dbo.fn_split(@TRUCK, '~') 
代替@TRUCK,因为我想传递一个~分隔的列表

我尝试使用:

WHERE TRUCK IN (COALESCE(SELECT value from dbo.fn_split(@TRUCK, '~')),ATP.TRUCK)
但出现以下错误:

关键字“SELECT”附近的语法不正确


不确定-但我希望您必须将“select value from dbo.fn…”分配给局部变量,然后在联合中引用局部变量(…)

不确定-但我希望您必须将“select value from dbo.fn…”分配给局部变量,然后在联合中引用局部变量(…)

您需要用
()
包围子查询,中间的
放错了位置:

WHERE TRUCK IN (COALESCE((SELECT value from dbo.fn_split(@TRUCK, '~')),ATP.TRUCK))

您需要用
()
包围子查询,中间的
放错了位置:

WHERE TRUCK IN (COALESCE((SELECT value from dbo.fn_split(@TRUCK, '~')),ATP.TRUCK))
尝试
选择dbo.fn_分割(@TRUCK,~')作为值
尝试
选择dbo.fn_分割(@TRUCK,~')作为值