我现在在10g中有一个表 这个表有一个字段  类型是varchar2的
现在表里面有一些数据
我现在有个需求 
要求出这个字段里面 满足 ‘V2200’到‘V2499’这个区间的所有的记录
我现在这样写了一个sql语句
select * from table_name where dx between 'V2200' and 'V2499';但是这个sql语句求出来的结果居然包含 ‘V240’这样的数据
我现在想要得出来的数据是 类似于‘V2200’,‘V2201’,'V2202','V2300'.....这样的结果哪位高手知道怎么才能写出这样的sql语句啊???

解决方案 »

  1.   

    作为字符而不是作为数字,v240是包含在v2200和v2500中间的
    你想要的结果是按数字来计算的结果,可以转成数字
    where to_number(replace(dx,'V','')) between 2200 and 2499
    或者定义好长度
    where dx between 'V2200' and 'V2499' and length(dx)=5
      

  2.   

    select * from table_name where regexp_like(dx,'V2[2-4][0-9]{2}');
      

  3.   

    可以试试这样判断
    where dx between 'V2200' and 'V2499' 
       and dx like 'V____'注:'V____'是V后面加4个"_",这样查出的就是含V,其后有4位的数据了,如有其他特殊情况数据另行追加判断。
      

  4.   

    select * from table_name where regexp_like(dx,'V2[2-4][0-9]{2}'); 
    3楼的正则式好!
      

  5.   

    用translate也可以比如
    select to_number(translate('vV234', '#vV','#')) from dual ;TO_NUMBER(TRANSLATE('VV234','#VV','#'))
    ---------------------------------------
                                        234
      

  6.   

    SQL 真是 很值得研究啊SELECT * FROM TABLENAME WHERE REGEXP_LIKE(DX, 'V2[2-4][0-9]{2}');