我现在在10g中有一个表 这个表有一个字段 类型是varchar2的
现在表里面有一些数据
我现在有个需求
要求出这个字段里面 满足 ‘V2200’到‘V2499’这个区间的所有的记录
我现在这样写了一个sql语句
select * from table_name where dx between 'V2200' and 'V2499';但是这个sql语句求出来的结果居然包含 ‘V240’这样的数据
我现在想要得出来的数据是 类似于‘V2200’,‘V2201’,'V2202','V2300'.....这样的结果哪位高手知道怎么才能写出这样的sql语句啊???
现在表里面有一些数据
我现在有个需求
要求出这个字段里面 满足 ‘V2200’到‘V2499’这个区间的所有的记录
我现在这样写了一个sql语句
select * from table_name where dx between 'V2200' and 'V2499';但是这个sql语句求出来的结果居然包含 ‘V240’这样的数据
我现在想要得出来的数据是 类似于‘V2200’,‘V2201’,'V2202','V2300'.....这样的结果哪位高手知道怎么才能写出这样的sql语句啊???
你想要的结果是按数字来计算的结果,可以转成数字
where to_number(replace(dx,'V','')) between 2200 and 2499
或者定义好长度
where dx between 'V2200' and 'V2499' and length(dx)=5
where dx between 'V2200' and 'V2499'
and dx like 'V____'注:'V____'是V后面加4个"_",这样查出的就是含V,其后有4位的数据了,如有其他特殊情况数据另行追加判断。
3楼的正则式好!
select to_number(translate('vV234', '#vV','#')) from dual ;TO_NUMBER(TRANSLATE('VV234','#VV','#'))
---------------------------------------
234