表a
id    地名
1    上海lajflsjf
2    sf杭州skfjk
3    dsf广州sf
4    sf武汉sf
5    sf上海sfs
6    sf广州表b
id    地名
1    上海
2    杭州如果查出表a中所有包含表b中地名列的记录?
即查出
1    上海lajflsjf
2    sf杭州skfjk
5    sf上海sfs

解决方案 »

  1.   

    select *
    from 表a a
    where exists(select 1 from 表b where charindex(地名,a.地名)>0)
      

  2.   

    无意中测试到这样也行
    select a.* from #a a,#b b where a.地名 like '%'+b.地名+'%'
      

  3.   

    select b.* from y许可证 b , a where b.许可项目 like '%'+a.xm+'%' 
    请问这样写哪里错了(是针对另外两个表的)?
      

  4.   

    或者用inner join 连接行吗?
      

  5.   

    ----------------------------
    select a.* from a where exists( select 1 from b patindex('%b.地名%',a.地名)<>0)
      

  6.   

    哦,sorry,问题找到了,原来我的地名列是varchar类型的,每个数据尾部带了很多空格。
    我只有通过rtrim去除空格了。这样就对了
    select a.* from #a a,#b b where a.地名 like '%'+rtrim(b.地名)+'%'
    可是难道一定要用rtrim吗,以后碰到类似的问题还有什么好方法?最好让空格从来就不出现。可能是定义的数据类型不恰当吧?
    可是我的数据长度是不固定的啊!
      

  7.   

    建议以后字段不要用char,用varchar或nvarchar,就不会出现空格了