admin 管理员组文章数量: 1087139
2024年4月17日发(作者:html代码的黑框怎么打)
oracle中判断某列是否为数字
在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,
我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两
个行之有效的方法(列名:column,表名:table):
1.使用trim+translate函数:
select * from table where trim(translate(column,'',' ')) is NULL;
这里要注意的是:translate函数的第三个参数是一个空格,不是'', 因为translate的
第三个参数如果为空的话,那么永远返回'',这样的就不能达到过滤纯数字的目的。这样把
所有的数字都转化为空格,如果全部是由数 构成,那么一旦trim后自然是空,实现了上
述目标。当然如果想排除空项的话,可以这样写:
select * from table where trim(translate(nvl(column,'x'),'',' ')) is
NULL;--x 表示任何'0-9'以外的字符。
2.使用regexp_like函数:
select * from table where regexp_like(column,'^[0-9]+[0-9]$');
这里要注意的是:regexp_like函数不是在所有的oracle版本中 都能使用的。
regexp_like是oracle支持正则表达式的四个函 数:regexp_like,regexp_replace,
regexp_instr,regexp_substr中的 一个,有关这方面更加详细信息,请关注相关文档。
3.删除重复数据:
3.1 首先定义怎样的数据是重复的数据,即在将要建立主键的列上存在重复的数据。
这里假如准备建立主键的列是col_1,可以巧用rowid来实现:
3.2 SQL语句如下:
delete from table A
where <(select max(rowid) from table B
where _1=_1 );
-----------------------------------------
oracle 判断字段是否为是数字 regexp_like用法 正则表达式
/*
ORACLE中的支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
版权声明:本文标题:sql中判断某列是否为数字 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713343891a630012.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论