将多个参数传递给SQL Server

时间:2012-12-27 13:55:17

标签: sql sql-server sql-server-2008 tsql

  

可能重复:
  Parameterizing an SQL IN clause?
  Comma-separated value insertion In SQL Server 2005

我尝试使用where子句搜索我的数据库,但我的字符串采用以下格式:

'233052,57516351,254689'

我需要使用以下查询在我的数据库中进行咨询:

SELECT * FROM myTable WHERE field IN (@list_string)

我该如何采取行动?

3 个答案:

答案 0 :(得分:3)

使用SQL Server 2008中引入的Table-valued parameters

这些允许您传递可用于查询的表结构。

对于其他选项,我建议阅读Erland Sommarskog撰写的Arrays and Lists in SQL Server

答案 1 :(得分:1)

在这种情况下,我多年来一直在使用Itai Goldstein's Split function。然后,您可以执行以下操作:

SELECT * 
FROM [myTable] 
WHERE [field] IN (
    SELECT [Data]
    FROM [dbo].[Split] (@list_string, ',')
);

答案 2 :(得分:0)

尝试执行sql语句连接:

declare @sql varchar(200)
set @sql='SELECT * FROM myTable WHERE field IN ('+@list_string+')'
exec(@sql)