我正在创建一个脚本,我正在使用IN关键字查询一个表。 当我在IN子句中键入数据时,查询会按我应该的方式执行。但是当我使用完全相同的数据创建一个变量并在IN子句中使用变量时,它不会。有任何想法吗???交易sql中的关键字IN问题
这里是工作
SELECT *
FROM scpcommandeventlog
WHERE MESSAGEid = 3
AND PARAM1 IN('11416407','11416410','11416413','11416417',
'11416419','11416421','11416423','11416427',
'11416432','11416433','11416434','11416435',
'11416438','11416443','11416446','11416448',
'11416451','11416454','11416458','11416462')
这里是不
SELECT * FROM scpcommandeventlog WHERE MESSAGEid = 3 AND PARAM1 IN(@list)
这里查询的查询是填充@list变量
DECLARE @List varchar(max)
SELECT @List = isnull(@List + ',', '') + '''' + cast(itemid as varchar) + ''''
FROM dbo.ItemList
WHERE sortid LIKE @sortid
SQL Server将不检查变量的内容,看它是否包含一个逗号分隔的列表。您正在有效地做'WHERE PARAM1 ='11416407,11416410'...' – 2013-05-04 17:27:02
您需要查看[表值参数](http://msdn.microsoft.com/zh-cn/library/bb510489(v = SQL.100)的.aspx)。 – 2013-05-04 18:20:44