有一个city的表中,其中有一个字段cityname(varchar)放置的数据是这样的
insert into city values('1102,1211,1540,1103,')
我要检索1101 和1211的数据(可能更多,因为这里可以复选)
我这样写是否合理?select * from city cityname like %1102% or cityname like %1211% 大约有几十万条数据,我在cityname上加了索引是否有更好的方法?谢谢

解决方案 »

  1.   

    不考虑性能的话这样写也未尝不可,建议做个全文索引,再使用UNION进行查询
    select * from city cityname like %1102%
    UNION
    select * from city cityname like %1211%
      

  2.   

    1、select * from city cityname like %1102% or cityname like %1211% 、
       使用不到索引
    2、可以用全文索引试试。
       http://blog.csdn.net/HEROWANG/archive/2009/08/11/4436605.aspx
      

  3.   

    select * 
      from city 
      where 
            (patindex('%1102%',cityname)>0 
               or patindex('%1211%',cityname)>0)
      

  4.   

    select * from city ','+cityname like ',1102,%' 
    UNION ALL
    select * from city ','+cityname like ',1211,%' 
      

  5.   

    这样好像不行,select * from city CHARINDEX(',1102,' ,','+cityname )>0
    UNION ALL
    select * from city CHARINDEX(',1211,' ,','+cityname )>0 看一下索引执行计划