orcale 非非等于_oracle判断某一字段不是纯数字

表中某一字段中应该为纯数字,偶然发现该字段包含其他值,需要对不是纯数字的数据项进行过滤

1.使用trim+translate函数:

select * from table where trim(translate(column,'0123456789','

')) is NULL;

这里要注意的是:translate函数的第三个参数是一个空格,不是'',

因为translate的第三个参数如果为空的话,那么永远返回'',这样的就不能达到过滤纯数字的目的。这样把所有的数字都转化为空格,如果全部是由数

构成,那么一旦trim后自然是空,实现了上述目标。当然如果想排除空项的话,可以这样写:

select * from table where

trim(translate(nvl(column,'x'),'0123456789',' ')) 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 A.rowid

where A.col_1=B.col_1 );

-----------------------------------------

oracle 判断字段是否为是数字 regexp_like用法 正则表达式

--创建表

create table fzq

(

id varchar(4),

value varchar(10)

);

--数据插入

insert into fzq values

('1','1234560');

insert into fzq values

('2','1234560');

insert into fzq values

('3','1b3b560');

insert into fzq values

('4','abc');

insert into fzq values

('5','abcde');

insert into fzq values

('6','ADREasx');

insert into fzq values

('7','123 45');

insert into fzq values

('8','adc de');

insert into fzq values

('9','adc,.de');

insert into fzq values

('10','1B');

insert into fzq values

('10','abcbvbnb');

insert into fzq values

('11','11114560');

insert into fzq values

('11','11124560');

--regexp_like

--查询value中以1开头60结束的记录并且长度是7位

select * from fzq where value like '1____60';

select * from fzq where regexp_like(value,'1....60');

--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。

--使用like就不是很好实现了。

select * from fzq where regexp_like(value,'1[0-9]{4}60');

-- 也可以这样实现,使用字符集。

select * from fzq where

regexp_like(value,'1[[:digit:]]{4}60');

-- 查询value中不是纯数字的记录

select * from fzq where not

regexp_like(value,'^[[:digit:]]+$');

-- 查询value中不包含任何数字的记录。

select * from fzq where

regexp_like(value,'^[^[:digit:]]+$');

--查询以12或者1b开头的记录.不区分大小写。

select * from fzq where regexp_like(value,'^1[2b]','i');

--查询以12或者1b开头的记录.区分大小写。

select * from fzq where regexp_like(value,'^1[2B]');

-- 查询数据中包含空白的记录。

select * from fzq where regexp_like(value,'[[:space:]]');

--查询所有包含小写字母或者数字的记录。

select * from fzq where

regexp_like(value,'^([a-z]+|[0-9]+)$');

--查询任何包含标点符号的记录。

select * from fzq where regexp_like(value,'[[:punct:]]');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值