当前表
EmployeeID CompanyID EmployeeCode EmployeeName
1001 C001 11919 ABC
1002 C001 10974 PQR
1003 C001 11890 XYZ
1004 C001 11621 LMN
像这样查询...
DECLARE @Empid VARCHAR(MAX)
SELECT @Empid= COALESCE(@Empid +',','')+''''+EmployeeID+'''' FROM cmsEmployee WHERE employeeCode IN('11919','10974','11890','11621' )
print @Empid
SELECT * FROM cmsEmployee WHERE EmployeeID IN( @Empid)
这不起作用,为什么?
答案 0 :(得分:3)
它不起作用,因为你不能将一个字符串放入in
子句并期望引擎解析它。
您只能在第一个查询中使用多个单个值。
where id in ('1','2') -- works beause that are two SEPERATE values
where id in ('1,2') -- works not because it is ONE string
答案 1 :(得分:0)
如果你编写一个由多个部分组成的直接查询,你不应该忘记添加GO来执行每个部分。
Select ...
GO
Print ...
GO
Select ...
答案 2 :(得分:0)
如果你在SQL Server中,你可能需要使用动态sql;这需要您以字符串形式构建查询,然后在完成
时执行它将您的empid声明更改为
DECLARE @Empid VARCHAR(MAX) = 'SELECT * FROM cmsEmployee WHERE EmployeeID IN( '
当您选择它时,添加一个关闭括号(如果您愿意,可以按步骤构建字符串。)
select @empid = @empid + ')'
如果你接受了你的印刷声明,它应该在你正确的时候运行;在你的代码中运行它
exec sp_exectutesql @empID