执行包含动态参数的SQL查询时出错

时间:2014-04-20 19:44:07

标签: sql sql-server

执行以下SQL查询时

declare @OrderNumber  AS VARCHAR(10)
set @OrderNumber=('41973600','41973605') 

SELECT productid 
FROM [order] 
sono LIKE @OrderNumber  

我收到了错误:

  

Msg 102,Level 15,State 1,Line 3
  ','附近的语法不正确。
  Msg 102,Level 15,State 1,Line 4
  '@OrderNumber'

附近的语法不正确

1 个答案:

答案 0 :(得分:0)

听起来你想要完成的事情不可能以这种方式完成。你不能将varchar(10)设置为多个值,因为你需要一个“IN”子句,但这里有不同的方法解决你的问题:

我不知道“sono”是什么,但它似乎是基于你的陈述的列名,所以:

SELECT productid FROM [order] where sono in ('41973600','41973605')

如果您正在寻找通配符,则可能是另一种选择:

SELECT productid FROM [order] where sono like '%41973600%' or sono like '%41973605%'

最后,如果你真的想要/需要声明@OrderNumber,那么你需要这样做:

declare @OrderNumber AS VARCHAR(10)
set @OrderNumber='41973600'
SELECT productid FROM [order] where sono= @OrderNumber

declare @OrderNumber AS VARCHAR(10)
set @OrderNumber='41973605'
SELECT productid FROM [order] where sono= @OrderNumber

现在,如果“sono”是该表的别名,那么您可能希望:

SELECT productid FROM [order] sono where sono.productit in ('41973600','41973605')

SELECT productid FROM [order] sono where sono.productid like '%41973600%' or son.productid like '%41973605%'

declare @OrderNumber AS VARCHAR(10)
set @OrderNumber='41973600'
SELECT productid FROM [order] sono where sono.productid= @OrderNumber

declare @OrderNumber AS VARCHAR(10)
set @OrderNumber='41973605'
SELECT productid FROM [order] sono where sono.productid= @OrderNumber

我希望这会有所帮助。