暂时想到的方法是利用 汉字占用2或者3个字节(是叫字节吗?),数字占一个 where linenum like '%1%' and length(linenum )*2-lengthb(linenum )=length(1) --判断是不是只含前面数字
请参照以下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运行过。
这个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号。
where linenum like '%1%'
and length(linenum )*2-lengthb(linenum )=length(1) --判断是不是只含前面数字
---------------------------------
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运行过。
------------------
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号。