比如获取30-50之间的所有整数,可以使用下面SQL
select fint
from (select level fint from dual connect by level <= 50) a
where afint >= 30主要是借助
level
和
connect
by
语句来完成。
不知道楼主的意思是不是要判断一个字段是否为纯数字还是说是否包含数字?
可以用oracle自带的正则表达式函数REGEXP_REPLACE把数字全部取出来,然后计算数字的长度是否等于这个字段的长度,如果等于的话说明这个值全部是数字,如果不等于的话说明值里面包含非数字,测试语句如下:
SELECT(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL;---取出值里面的全部数字
SELECT LENGTH('LSS12345'),LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL; ---查询出字段的长度和字段内数字的长度
SELECT FROM DUAL WHERE LENGTH('LSS12345') = LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) ; ----查询这个字段所有的纯数字列
如楼上所说,10g以后的版本可以用regexp_substr函数
如果oracle版本较低,9i及以下版本可使用translate函数
如你上边那个
select translate('[289]+[362]-[323243]ppp[454353]','0123456789'||'[289]+[362]-[323243]ppp[454353]', '0123456789') from dual;
具体语法
select translate(字段名,字段名||'0123456789','0123456789') from table where 条件
这个问题不单是提取汉字的问题,还要处理不同级别单位的转换,处理办法参考如下:
1、如果只有,瓦和千瓦,可以这样写,
select sum(decode (c1_1,1,c1_11000,c1_1)) from
(select t, decode(c1contain('瓦'),1,c1contain('千瓦'),0,0) c1_1,replace(replace(c1,'千瓦','') ,'瓦','')) c1 from table1 t)
2、如果不只瓦和千瓦,可依照上述办法添加相应条件
3、如果不是sum求和,可根据实际需要更改统计函数
以上就是关于oracle 获取范围内所有整数全部的内容,包括:oracle 获取范围内所有整数、oracle sql 判断是否数字、oracle怎么截取“[289]+[362]”中括号里面的数字 给高分谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)