【发布时间】:2012-08-08 11:48:17
【问题描述】:
我使用的是 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子句中需要的字符串/数组。
【问题讨论】:
标签: sql sql-server-2008 stored-procedures