有没有搞错,@Profession是一个变量,它的值为"'水工','水利'",你用这种方法生成语句再执行?能行得通才怪!select count(*) from dbo.ExpertPerson_table where Professinal in (@profession) and Judge_Post in (@post)等同于select count(*) from dbo.ExpertPerson_table where Professinal in (['水工','水利']) and Judge_Post in (['工程师'])而 select count(*) from dbo.ExpertPerson_table where Professinal in ('水工','水利') and Judge_Post in ('工程师') 等同于 select count(*) from dbo.ExpertPerson_table where Professinal in ([水工],[水利]) and Judge_Post in ([工程师])完全是两码事
刚才回答急了,不知是不是这个意思? 这次写笨笨的:declare @profession varchar(2000) declare @Post varchar(2000) declare @sql_s varchar(5000) set @Profession=''''+'水工'+','+''''+'水利'+'''' set @Post=''''+'工程师'+'''' set @Post='工程师' set @Post=''''+@Post+'''' set @sql_s='select count(*) from dbo.ExpertPerson_table where Professinal in ('+@profession+') and Judge_Post in ('+@post+')' print @sql_s最后把print改成exec(@sql_s)
改成
set @post='工程师'
select count(*) from dbo.ExpertPerson_table where Professinal in ('水工','水利') and Judge_Post in ('工程师')
等同于
select count(*) from dbo.ExpertPerson_table where Professinal in ([水工],[水利]) and Judge_Post in ([工程师])完全是两码事
这次写笨笨的:declare @profession varchar(2000)
declare @Post varchar(2000)
declare @sql_s varchar(5000)
set @Profession=''''+'水工'+','+''''+'水利'+''''
set @Post=''''+'工程师'+''''
set @Post='工程师'
set @Post=''''+@Post+''''
set @sql_s='select count(*) from dbo.ExpertPerson_table where Professinal in ('+@profession+') and Judge_Post in ('+@post+')'
print @sql_s最后把print改成exec(@sql_s)