资源描述:
《sql中判断某列是否为数字》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、oracle中判断某列是否为数字在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名:table):1.使用trim+translate函数:select*fromtablewheretrim(translate(column,'0123456789',''))isNULL;这里要注意的是:translate函数的第三个参数是一个空格,不是'',因为translate的第三个参数如果为空的话,那么永远返回'',这样的就不能达到过滤纯数字的目的。这样
2、把所有的数字都转化为空格,如果全部是由数构成,那么一旦trim后自然是空,实现了上述目标。当然如果想排除空项的话,可以这样写:select*fromtablewheretrim(translate(nvl(column,'x'),'0123456789',''))isNULL;--x表示任何'0-9'以外的字符。2.使用regexp_like函数:select*fromtablewhereregexp_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.2SQL语句如下:deletefromtableAwhereA.rowid<(selectmax(rowid)fromtableBwhereA.col_1=B.col_1);-----------------------------------------oracle判断
4、字段是否为是数字regexp_like用法正则表达式/*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE:与LIKE的功能相似2,REGEXP_INSTR:与INSTR的功能相似3,REGEXP_SUBSTR:与SUBSTR的功能相似4,REGEXP_REPLACE:与REPLACE的功能相似它们在用法上与OracleSQL函数LIKE、INSTR、SUBSTR和REPLACE用法相同,但是它们使用POSIX正则表达式代替了老的百分号(%)和通配符(_)字符。POSIX正则表达式由标准的元字符(metacharacters)所构成:'^'匹配输入字符串的开始位置,
5、在方括号表达式中使用,此时它表示不接受该字符集合。'$'匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则$也匹配''或'r'。'.'匹配除换行符之外的任何单字符。'?'匹配前面的子表达式零次或一次。'+'匹配前面的子表达式一次或多次。'*'匹配前面的子表达式零次或多次。'
6、'指明两项之间的一个选择。例子'^([a-z]+
7、[0-9]+)$'表示所有小写字母或数字组合成的字符串。'()'标记一个子表达式的开始和结束位置。'[]'标记一个中括号表达式。'{m,n}'一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m
8、次。um匹配num,其中num是一个正整数。对所获取的匹配的引用。字符簇:[[:alpha:]]任何字母。[[:digit:]]任何数字。[[:alnum:]]任何字母和数字。[[:space:]]任何白字符。[[:upper:]]任何大写字母。[[:lower:]]任何小写字母。[[:punct:]]任何标点符号。[[:xdigit:]]任何16进制的数字,相当于[0-9a-fA-F]。各种操作符的运算优先级转义符(),(?:),(?=),[]圆括号和方括号*,+,?,{n},{n,},{n,m}限定符^,$,anymetacharacter位置和顺序
9、*/--创建表createtab
10、lefzq(idvarchar(4),valuevarchar(10));--数据插入insertintofzqvalues('1','1234560');insertintofzqvalues('2','1234560');insertintofzqvalues('3','1b3b560');insertintofzqvalues('4','abc');insertintofzqvalues('