----例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+')'

解决方案 »

  1.   

    --try
    set @SqlWhere=@SqlWhere+N'And  charindex(','+financial_year+',', ','+@application_year+',')>0 '
      

  2.   

    参考下面的语句declare @str varchar(100),@sql varchar(1000)
    set @str='''aaa'',''bbb'',''ccc'''
    set @sql='select * from A  where productName in (' + '' + @str + '' +')'
    select @sql
    execute(@sql)
      

  3.   

    还是不行,用
    set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
    set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
    查询结果不正确。
      

  4.   

    多加两个 '' 单引号set @SqlWhere=@SqlWhere+N' And financial_year IN ('+ '' +@application_year + '' +')'
      

  5.   

    好像楼上的已经说的很明白了。
    动态语句中你需要把'换成''.
    你的实际效果的语句字串应该是。
    'financial_year IN (''2005/2006'',''2003/2004'',''2004/2005'') '
      

  6.   

    set @application_year='2005/2006,2003/2004,2004/2005'
    set @SqlWhere=@SqlWhere+N' And financial_year IN '
    EXEC(@SqlWhere+'('+@application_year+')')
      

  7.   

    还是不行,用
    set =@application_year='''2005/2006'',''2003/2004'',''2004/2005'''
    set @SqlWhere=@SqlWhere+N' And financial_year IN ('+@application_year+')'
    查询结果不正确。
    只要能查询,结果不对不一定是语句的问题,你可以 
    print @SqlWhere
    看看拼接的结果是否是你预期的,如果不对,再找原因
    如果是你预期的,则你应该检查你的条件