sql中判断某列是否为数字

上传人:自*** 文档编号:79098607 上传时间:2019-02-16 格式:DOCX 页数:4 大小:44.45KB
返回 下载 相关 举报
sql中判断某列是否为数字_第1页
第1页 / 共4页
sql中判断某列是否为数字_第2页
第2页 / 共4页
sql中判断某列是否为数字_第3页
第3页 / 共4页
sql中判断某列是否为数字_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《sql中判断某列是否为数字》由会员分享,可在线阅读,更多相关《sql中判断某列是否为数字(4页珍藏版)》请在金锄头文库上搜索。

1、oracle中判断某列是否为数字在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名:table): 1.使用trim+translate函数: select * from table where trim(translate(column,0123456789, ) is NULL;这里要注意的是:translate函数的第三个参数是一个空格,不是, 因为translate的第三个参数如果为空的话,那么永远返回,这样的就不能达到过滤纯数字的目的。

2、这样把所有的数字都转化为空格,如果全部是由数 构成,那么一旦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支持正则表

3、达式的四个函 数:regexp_like,regexp_replace,regexp_instr,regexp_substr中的 一个,有关这方面更加详细信息,请关注相关文档。3.删除重复数据: 3.1 首先定义怎样的数据是重复的数据,即在将要建立主键的列上存在重复的数据。这里假如准备建立主键的列是col_1,可以巧用rowid来实现: 3.2 SQL语句如下: delete from table A where A.rowid(select max(rowid) from table B where A.col_1=B.col_1 );-oracle 判断字段是否为是数字 regexp_li

4、ke用法 正则表达式/*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。POSIX 正则表达式由标准的元字符(metacharacters)所构成: 匹配输入字符串的开始位置,在方括号表达式中

5、使用,此时它表示不接受该字符集合。$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 n 或 r。. 匹配除换行符之外的任何单字符。? 匹配前面的子表达式零次或一次。+ 匹配前面的子表达式一次或多次。* 匹配前面的子表达式零次或多次。| 指明两项之间的一个选择。例子(a-z+|0-9+)$表示所有小写字母或数字组合成的字符串。( ) 标记一个子表达式的开始和结束位置。 标记一个中括号表达式。m,n 一个精确地出现次数范围,m=出现次数=n,m表示出现m次,m,表示至少出现m次。num 匹配 num,其中 num 是一个正整数。对所获取的匹配

6、的引用。字符簇: :alpha: 任何字母。:digit: 任何数字。:alnum: 任何字母和数字。:space: 任何白字符。:upper: 任何大写字母。:lower: 任何小写字母。:punct: 任何标点符号。:xdigit: 任何16进制的数字,相当于0-9a-fA-F。各种操作符的运算优先级转义符(), (?:), (?=), 圆括号和方括号*, +, ?, n, n, n,m 限定符, $, anymetacharacter 位置和顺序| */-创建表create table fzq(id varchar(4),value varchar(10);-数据插入insert int

7、o 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

8、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就不

9、是很好实现了。select * from fzq where regexp_like(value,10-9460);- 也可以这样实现,使用字符集。select * from fzq where regexp_like(value,1:digit:460);- 查询value中不是纯数字的记录select * from fzq where not regexp_like(value,:digit:+$);- 查询value中不包含任何数字的记录。select * from fzq where regexp_like(value,:digit:+$);-查询以12或者1b开头的记录.不区分大小写

10、。select * from fzq where regexp_like(value,12b,i);-查询以12或者1b开头的记录.区分大小写。select * from fzq where regexp_like(value,12B);- 查询数据中包含空白的记录。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:);/*理解它的语法就可以了。其它的函数用法类似。*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号