做了一个计算机的表tab1
--------------------------------------------------------------------------------
computerid(计算机编号 int )              computerpart(计算机配件 varchar)
1                                          1,2,3
5                                          205,100,52
--------------------------------------------------------------------------------   
配件表tab2
--------------------------------------------------------------------------------
partid(计算机配件ID INT\INDEX\KEY\NOT NULL)  partname(名称 varchar)
1                                            philips display
2                                            two birds keyboard
3                                            westdata harddisk
--------------------------------------------------------------------------------
现在我想的到计算机1的配件表,于是
我select partname from   tab2 where id in (select computerpart from tab1 where id=1)    
语句执行得到的结果如下
select partname from   tab2 where id in ('1,2,3')
但提示不能转换INT到varchar.象这种问题该怎么处理?                 

解决方案 »

  1.   

    select b.partname from tab1 a,tb2 b
     where id=1 and charindex(','+rtrim(b.partid)+',',','+a.computerpart+',')>0
      

  2.   


    select partname from tab2 where charindex(+','ltrim(id)+',', ','+'1,2,3'+',')>0
      

  3.   

    这个表设计不合理啊,
    computerid(计算机编号 int ) computerpart(计算机配件 int)
    1 1
    1 2
    1 3
    5 205
    5 100
    5 52
    --------------------------------------------------------------------------------   
    配件表tab2
    --------------------------------------------------------------------------------
    partid(计算机配件ID INT\INDEX\KEY\NOT NULL) partname(名称 varchar)
    1 philips display
    2 two birds keyboard
    3 westdata harddisk
    我select partname from tab2 where id in (select computerpart from tab1 where id=1)