Oracle中判断字段是否为数字

在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名:table):

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中的 一个,有关这方面更加详细信息,请关注相关文档。

原文地址:https://www.cnblogs.com/lgx5/p/12146578.html

时间: 2024-11-13 06:41:51

Oracle中判断字段是否为数字的相关文章

Oracle中判断字段是否包含中文

如果要判断字段中包含中文,有个简单的方法. SQL> drop table test purge; SQL> create table test as select * from dba_objects where rownum<10; SQL> update test set object_name='中国' where  rownum <3; SQL> commit; SQL> col object_name format a30 SQL> col as

mysql中判断字段为空

mysql中判断字段为null或者不为null 在mysql中,查询某字段为空时,切记不可用 = null, 而是 is null,不为空则是 is not null select nulcolumn from table; if nuncolumn is null then select 1; else select 2; end if;

字符串--java中判断字符串是否为数字的方法的几种方法?

ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.u

解决比较Oracle中CLOB字段问题

解决比较Oracle中CLOB字段问题 Oracle中CLOB和BLOB字段虽说在开发中满足了存放超大内容的要求,但是在一些简单使用中确频频带来麻烦.CLOB中存放的是指针,并不能直接取到实际值.而SQLServer中的text字段就很方便,可以直接拿来与需要的字符串比对,象什么等于呀小于呀Like呀不在话下.可是换成Oracle就麻烦死了,要开辟一个缓存,把内容一段段读取出来后转换,难道写个where条件都这么复杂?经过多方寻求资料,终于发现一个方便简单的方法:利用dbms_lob 包中的方法

java中判断字符串是否为数字的方法的几种方法

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

5.oracle中一个字段中存储&#39;a&#39;,&#39;b&#39;与&#39;a&#39;与a的写法,存储过程中与之对应

select '''a'',''b''' from dual; --'a','b' select '''a''' from dual; --'a' select 'a' from dual; --a 5.oracle中一个字段中存储'a','b'与'a'与a的写法,存储过程中与之对应

oracle如何判断字段是数字还是字符

参考百度oracle正则表达式 --数字开头的select * from tmp where regexp_like(str,'^[0-9]');--从头到位都是数字select * from tmp where regexp_like(str,'^[0-9]+$')--字段中是数字或者是字母组成select * from tmp where regexp_like(str,'^[a-z]|[0-9]$','i');--从头到位都是字母select * from tmp where regexp

Shell中判断字符串是否为数字的6种方法分享

#!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真. sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要

Java中判断字符串是否为数字的五种方法

推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 方法二: Java代码   /* * 判断是否为整数 * @param str 传入的字符串 * @return