可能重复:
在使用 IN 子句进行动态查询时需要帮助
我正在使用 SQL Server 2008,这是我面临的问题。我有一个名为 Cars 的表,其中有一列 Company。现在我有一个看起来像这样的存储过程
创建过程 FindCars (@CompanyNames varchar(500)) 作为 SELECT * FROM Cars WHERE Company IN (@CompanyNames)
我尝试了这样的事情并失败了
声明@CompanyNames varchar(500) SET @CompanyNames = '''福特'',''宝马''' 执行 FindCars @CompanyNames
我没有返回任何行。当我执行以下操作时
声明@CompanyNames varchar(500) SET @CompanyNames = '''福特'',''宝马''' 选择@CompanyNames
我得到以下结果
“福特”、“宝马”
如果我在存储过程中的 select 语句中替换这个值,它就可以工作
SELECT * FROM Cars where Company in ('Ford','BMW')
因此,我认为存储过程似乎被'Ford','BMW'
视为一个字符串而不是一个数组。有人可以帮我解决这个问题。如何在存储过程中动态构造 select 语句的 IN 子句中所需的字符串/数组。