数据库字段:线路名(name),线路号(linenum),等
我想实现的是例如:按linenum=1 或者 linenum=1路查询,显示的效果是:运通1路,1路,就是所有关于1的线路全部显示,而不显示运通103,105其它线路

解决方案 »

  1.   

    暂时想到的方法是利用  汉字占用2或者3个字节(是叫字节吗?),数字占一个
    where linenum like '%1%' 
    and length(linenum )*2-lengthb(linenum )=length(1)   --判断是不是只含前面数字
      

  2.   

    请参照以下SQL实现:
    ---------------------------------
    select *
      from (select rownum || '路' as bus_num from dual connect by rownum < 200)
     where regexp_like(bus_num, '^[[:digit:]]{2}路');
    以上下SQL检索出1路~200路之间的两位数数字的路线。
    以下SQL检索1路~200路之间的只包含1和2数字的两位路线
    ------------------------------
    select *
      from (select rownum || '路' as bus_num from dual connect by rownum < 200)
     where regexp_like(bus_num, '^[1|2]{2}路');
    再需要什么在说。上面的SQL在10g运行过。
      

  3.   

    这个SQL是你需要的:
    ------------------
    select *
      from (select rownum || '路' as bus_num from dual connect by rownum < 200
            union
            select '运通'||rownum || '路' as bus_num from dual connect by rownum < 200
            )
     where regexp_like(bus_num, '[^[:digit:]][1]{1}路');他能查出【运通1路】如果你想查【运通11路】可以成以下SQL
    regexp_like(bus_num, '[^[:digit:]][1]{2}路');如果一个SQL想查出【运通11路】【运通12路】【运通21路】【运通22路】
    你这样改:
    regexp_like(bus_num, '[^[:digit:]][1|2]{2}路');以上SQL不会检索出不是数字开头的bus号。