SQL WHERE IN导致问题

时间:2011-11-16 17:33:38

标签: sql

我有以下部分 - 注意@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”附近的语法不正确。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

不确定 - 但我希望你必须将'选择值从dbo.fn ...'分配给局部变量然后引用coalesce中的局部变量(...)