declare @s_sql varchar(200)
declare @cwhid  varchar(100)
set @cwhid = '(''01'',''02'',''12'')'
set @s_sql = select cmteid ,cmtename,cdes from stock where cwhid in ' + @cwhid 
exec(@s_sql)

解决方案 »

  1.   

    楼上的稍微有点问题,缺少个逗号修改一下
    declare @s_sql varchar(200)
    declare @cwhid  varchar(100)
    set @cwhid = '(''01'',''02'',''12'')'
    set @s_sql = 'select cmteid ,cmtename,cdes from stock where cwhid in ' + @cwhid 
    exec(@s_sql)
      

  2.   

    set @cwhid=('01','02','12')--->這裡是一個集合(而不是個字符串)
    你以後可以這樣檢測一下
    declare @cwhid  varchar(100)
    set @cwhid = '(''01'',''02'',''12'')'
    print @cwhid ---看這裡是不是你想要的結果
      

  3.   

    talantlee,按你说的不行啊,还是查询不到结果,我是在存储过程查询的,
    declare @as_bmteid varchar(20) ,
    @as_emteid varchar(20),
            @as_cwhid  varchar(20)
           
           
    set @as_cwhid = '(''01'',''02'',''12'')'select stock.cmteid, product.ccname, product.cspec, product.cunitid,'@' as 'ccolorid',
    0 as 'dnetqty',0 as 'dmrpqty',sum(stockc.dqty) as 'dqty', product.dmin, stock.dqty3,
    stock.dqty4, stock.dqty2, stock.dqty1, 0
    from stock, stockc, warehous, product
    where stock.cmteid = stockc.cmteid
      and stockc.cwhid = warehous.cwhid
      and stockc.cmteid = product.cmteid
      and (stock.cmteid >= @as_bmteid or @as_bmteid is null or len(@as_bmteid) = 0)
      and (stock.cmteid <= @as_emteid or @as_emteid is null or len(@as_emteid) = 0)
              and stockc.cwhid in ( @as_cwhid )
    and product.cstop <> '1' and (warehous.cuserflag is null or warehous.cuserflag = '1')
    group by  stock.cmteid, product.ccname, product.cspec, product.cunitid,--dnetqty,dmrpqty,
     product.dmin, stock.dqty3, stock.dqty4, stock.dqty2, stock.dqty1
    order by stock.cmteid
      

  4.   

    cwhid是nvarchar类型 ,我想用in查询
    select cmteid ,cmtename,cdes from stock where cwhid in(@cwhid)
    我想用set @cwhid=('01','02','12')查询,但是得不到结果,应该怎样查询啊declare @sqlstr varchar(8000)
    declare @cwhid varchar(100)
    set @cwhid ='(''01'',''02'',''12'')'
    set @sqlstr='select cmteid ,cmtename,cdes from stock where cwhid in'+@cwhid
    exec(@sqlstr)
      

  5.   

    declare @sqlstr varchar(8000)
    declare @cwhid varchar(100)
    set @cwhid ='(''01'',''02'',''12'')'
    set @sqlstr='select 1 from stock where cwhid in'+@cwhid--你這樣先檢查一下能不能通過
    exec(@sqlstr)
      

  6.   

    --====測試-------
    drop table a
    create table a
    (a varchar(100),
    b int)
    insert into a
    select '01',1 union all
    select '02',2 union all
    select '01',3 union all
    select '01',4 union all
    select '02',5 union all
    select '03',6 union all
    select '03',7 union all
    select '01',8 union all
    select '04',9 union all
    select '05',10 union all
    select '01',11 
    declare @sqlstr varchar(8000)
    declare @cwhid varchar(100)
    set @cwhid ='(''01'',''02'')'
    print @cwhid
    set @sqlstr='select  *  from a where  a in'+@cwhid
    exec(@sqlstr)
    ---------------結果
    01 1
    02 2
    01 3
    01 4
    02 5
    01 8
    01 11
    可見能通過