SQL Server解惑——查询条件IN中能否使用变量
在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS ( SELECT 1 FROM sys.objects WHERE name= 'TEST' AND type= 'U' ) BEGIN DROP TABLE TEST; END GO CREATE TABLE TEST ( ID INT , NAME VARCHAR (16) ); GO INSERT INTO dbo.TEST SELECT 1, 'a' UNION ALL SELECT 2, 'b' UNION ALL SELECT 3, 'c' UNION ALL SELECT 4, 'a,b' UNION ALL SELECT 5, '' 'b' ',' 'c' '' UNION ALL SELECT 6, '' 'b' ; GO 如下所示,如果查询条件里面,变量只有一个值,此时SQL是正常的。 DECLARE @name VARCHAR (16); SET @name= 'a' ; SELECT * FROM TEST WHERE name IN (@name); GO DECLARE @name VARCHAR (16); SET @name= 'a,b' ; SELECT * FROM TEST