我可以将几个字符串传递给Dynamic SQL中的一个参数吗?

时间:2018-05-24 17:41:50

标签: sql sql-server sql-server-2008 sql-like

我试图将几个字符串传递给一个名为' @ Portfolio'的参数,并使用LIKE子句。那可能吗?这样的事情。

Declare @AsOfDate varchar(10)
Declare @PID varchar(5)
Declare @Portfolio varchar(20)
Declare @sqlCommand  varchar(max)
Set @AsOfDate = '04/30/2018'
Set @Portfolio = 'Treasury Investment,CASH,Derivatives,Wholesale Funding'
Set @PID = 'I.A.6'

...etc...

WHERE ((Tgt_DO.PID like ' + '''' + @PID + '''' + ' AND Tgt_DO.Portfolio like ' + '''' + @Portfolio + '''' + ' And Tgt_DO.AsOfDate = ' + '''' + @AsOfDate + '''' + '))'

我在SQL Server 2008上。

1 个答案:

答案 0 :(得分:1)

详细说明评论...因为在某些情况下您使用LIKE,您需要联接%

where
    Tgt_DO.PID like '%' + @PID + '%'
    and Tgt_DO.Portfolio like '%' + @Portfolio + '%'
    and Tgt_DO.AsOfDate = @AsOfDate

由于@Portfolio是逗号分隔的字符串,因此可以带回意外的结果。我会使用Table-Valued Parameter或使用分割器将它们拆分为临时表或表变量,如this answer