A表:Ids取的B表中的id,以,隔开
selName  Ids
a      001,002,003B表 
Id   Naics
001  236115
002  421122
003  221100C表
Naics    Zip   Locality
236115  9210  Local1
421122  2358  Local2
221100  9402  Local3现在的参数是A表中的"a"与C表中的9210,2358,9402如何把Local1,Local2,Local3搜索出来呢?

解决方案 »

  1.   

    select C.* from C ,A,B
    WHERE  C.Naics = B.Naics
    AND  PatIndex('%'+B.ID+'%' ,A.IDS)>0
      

  2.   

    最好把表A的最后一位也加上,select C.* from C ,A,B
    WHERE  C.Naics = B.Naics
    AND  PatIndex('%'+B.ID+',%' ,A.IDS)>0 这样精确一点。
      

  3.   

    谢谢cpp2017(慕白兄),但是我的A表参数是selName啊。
    再说B表中的id是从1自动编号到20000的,你这样会不会有错误呢?
      

  4.   

    还没有准确,没有考虑最后一个
    select C.* from C ,A,B
    WHERE  C.Naics = B.Naics
    AND  PatIndex('%'+B.ID+',%' ,A.IDS+',')>0
      

  5.   

    我现在不知道a.ids,而是知道a表中的selName,再根据selName来找ids。
      

  6.   

    先给把表A的字段加上个, Update A SEt Ids = Ids +','为什么要加?
    因为如果不加的话  PatIndex('%'+B.ID+'%' ,A.IDS) 
    如果要查200那么1200,2200,3200...都出来了,所以加个,号
    用PatIndex('%'+B.ID+',%' ,A.IDS) 
    就不会出现这样的情况,但是A的ids中最后一个是没有,号的,所以要预先加上。最后用:select C.* from C ,A,B
    WHERE  C.Naics = B.Naics
    AND  PatIndex('%'+B.ID+',%' ,A.IDS)>0 AND A.selName = '******'
      

  7.   

    select C.Locality
    from A jnner join B
         on A.Ids=B.Ids inner join
         on B.Naics=C.Naics
      

  8.   

    楼上的看清楚题目再回答
    楼主:   知道a表中的selName,再根据selName来找ids。
    cpp2017(慕白兄)给的不只是查1个
    你要的话再加个and A.selName = 'a'
      

  9.   

    学习
    ------------------------
    http://fenglin.xland.cn
    ------------------------
      

  10.   

    我试验了下select PATINDEX('%200%','100,1200,')  返回的是 6 好像加个“,”还是会查到1200
      

  11.   

    http://community.csdn.net/Expert/topic/5282/5282346.xml?temp=.6195795
    再看看这个吧,谢谢了。
      

  12.   

    Click the link to solve your problem.Good luck!