----例1:
set =@application_year='2005/2006,2003/2004,2004/2005'
set @SqlWhere=@SqlWhere+N' And financial_year IN ('''
+replace(@application_year,',',''',''')+''')'----例2:
set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
set =@application_year='2005/2006,2003/2004,2004/2005'
set @SqlWhere=@SqlWhere+N' And financial_year IN ('''
+replace(@application_year,',',''',''')+''')'----例2:
set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
set @SqlWhere=@SqlWhere+N'And charindex(','+financial_year+',', ','+@application_year+',')>0 '
set @str='''aaa'',''bbb'',''ccc'''
set @sql='select * from A where productName in (' + '' + @str + '' +')'
select @sql
execute(@sql)
set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
查询结果不正确。
动态语句中你需要把'换成''.
你的实际效果的语句字串应该是。
'financial_year IN (''2005/2006'',''2003/2004'',''2004/2005'') '
set @SqlWhere=@SqlWhere+N' And financial_year IN '
EXEC(@SqlWhere+'('+@application_year+')')
set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
查询结果不正确。
只要能查询,结果不对不一定是语句的问题,你可以
print @SqlWhere
看看拼接的结果是否是你预期的,如果不对,再找原因
如果是你预期的,则你应该检查你的条件