当前位置: 代码迷 >> Oracle管理 >> 求sql语句varchar转int 碰到特殊字符跳过
  详细解决方案

求sql语句varchar转int 碰到特殊字符跳过

热度:357   发布时间:2016-04-24 04:07:36.0
求sql语句varchar转int 遇到特殊字符跳过
我想查一个字段是varchar转换成int 
用来判断<25以下的数据
可是现在有少量特殊字符不能转换int

想按照20140101-20140202这种的时间把小于25数据查出来,不能转换的也查出来
------解决思路----------------------
看不懂呢?给出表结构再给点示例数据吧,啥小于25 啊?
------解决思路----------------------
楼主这种你用正则表达式替换,把非数字替换成空’‘字符串。
------解决思路----------------------
利用正则对数据进行拆分
select REGEXP_SUBSTR(A, '正则表达式', 1, LEVEL) A,B,C
from T
CONNECT BY LEVEL <= REGEXP_COUNT(A, '正则表达式')
and rowid= prior rowid
and prior dbms_random.value is not null;


------解决思路----------------------
引用:
想查询指定时间段,25以下的数据,和不能判断的特殊字符数据

时间段例如20140101-20141111

字段abc是varchar里面是30,26,24.5,25,这样的数据,里面还有一些不能通过to_number(abc)转换的特殊字符


先将不能转换的数据替换为“”,然后再用to_number()来转换,时间的类型直接比较就可以了
下面一个转换的一个小列子:
select * from tb_object t
where to_number(t.id) = 2
  相关解决方案