select * from PropertyValues where Id in (select Valuelist from ProductPropertys where Valuelist is not null)"select Valuelist from ProductPropertys where Valuelist is not null" 
ValueList存的Nvarchare是4,6,7,104,122报错:在将 nvarchar 值 '4,6,7,104,122' 转换成数据类型 int 时失败。sqlserver

解决方案 »

  1.   

    自己改改吧,看上去设计也很烂if OBJECT_ID('test') is not null
    drop table test  
    go  
    create table test  
    (  
        id int,  
        name varchar(10),  
        [key] varchar(20)  
    )  
    go  
    insert test  
    select 1,'lisa','li,is,sa' union all
    select 2,'sophia','ab,cd,ef' union all
    select 3,'lori','12,34,23'
    go  
        
    select
        id,  
        a.name,  
        SUBSTRING([key],number,CHARINDEX(',',[key]+',',number)-number) as [key]  
    from
        test a,master..spt_values  
    where
        number >=1 and number<len([key])   
        and type='p' 
        and substring(','+[key],number,1)=','
    /*  
    id    name    key
    -----------------------------  
    1    lisa    li  
    1    lisa    is
    1    lisa    sa  
    2    sophia    ab  
    2    sophia    cd  
    2    sophia    ef  
    3    lori    12  
    3    lori    34  
    3    lori    23  
    */  
    --很少见到有人写这样的方法   试了一下   可以实现
      

  2.   

    按你的思路写了个,不过这个查询效率也不会高。
    select * 
    from PropertyValues T1
    where EXISTS(
    select 1 from ProductPropertys T2
    where ','+T2.Valuelist+',' LIKE ','+LTRIM(T1.ID)+','
    )
      

  3.   


    select a.* from PropertyValues,ProductPropertys 
    where charindex(id,Valuelist)!=0