变量@holidays 是页面传过来的值是这样的格式:2011-02-18,2011-02-19,2011-02-20
我要在存储过程里面把@holidays这个字段格式转换成: '2011-02-18','2011-02-19','2011-02-20' 用另外的变量接收里面传过来日期个数不固定
我要做删除操作  where DATA in (@holidays) 如果这里直接传@holidays肯定不行的,现在我不会转换了,该怎么写

解决方案 »

  1.   

    WHERE CHARINDEX( CONVERT(CHAR(10),DATA,120) ,@holidays)>0
      

  2.   

    要是mssql08 ,可以考虑type变量
      

  3.   


    select replace(''''+'2011-02-18,2011-02-19,2011-02-20'+'''',',',''',''')/*
    --------------------------------------
    '2011-02-18','2011-02-19','2011-02-20'
      

  4.   

    前后加引号,逗号变为','是这个意思么select ''''+replace('2011-02-18,2011-02-19,2011-02-20',',',''',''')+''''
      

  5.   


    是这个意思
    如果
    select ''''+replace('2011-02-18,2011-02-19,2011-02-20',',',''',''')+''''
    不给固定值,2011-02-18,2011-02-19,2011-02-20,用变量@holidays
    要怎么写
      

  6.   

    select ''''+replace(@变量,',',''',''')+''''
      

  7.   


    declare @holidays varchar(200)='2011-02-18,2011-02-19,2011-02-20'
    declare @TT table(date datetime)while(LEN(@holidays)>0)
    begin
    insert into @TT(date)
    select LEFT(@holidays,10)
    --select LEN(@holidays)-11
    if(LEN(@holidays)-11<0)
    begin
    set @holidays=''
    end
    else
    begin
    set @holidays=RIGHT(@holidays,LEN(@holidays)-11)
    end
    end

    select * from MyTable where date in (select date from @TT)
      

  8.   


    select replace(''''+@holidays+'''',',',''',''')