加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在Oracle中查找不包含数字数据的行

发布时间:2020-12-12 06:24:15 所属栏目:MsSql教程 来源:网络整理
导读:我试图在一个非常大的Oracle表中找到一些有问题的记录.该列应包含所有数值数据,即使它是一个varchar2列.我需要找到不包含数字数据的记录(当我尝试在此列上调用它时,to_number(col_name)函数会抛出一个错误). 解决方法 要得到一个指标: DECODE( TRANSLATE(you
我试图在一个非常大的Oracle表中找到一些有问题的记录.该列应包含所有数值数据,即使它是一个varchar2列.我需要找到不包含数字数据的记录(当我尝试在此列上调用它时,to_number(col_name)函数会抛出一个错误).

解决方法

要得到一个指标:
DECODE( TRANSLATE(your_number,'0123456789',' ')

例如

SQL> select DECODE( TRANSLATE('12345zzz_not_numberee',' '),NULL,'number','contains char')
 2 from dual
 3 /

"contains char"

SQL> select DECODE( TRANSLATE('12345','contains char')
 2 from dual
 3 /

"number"

Oracle 11g具有正则表达式,因此您可以使用此表达式获取实际数字:

SQL> SELECT colA
  2  FROM t1
  3  WHERE REGEXP_LIKE(colA,'[[:digit:]]');

COL1
----------
47845
48543
12
...

如果有一个非数字值,如’23g’,它将被忽略.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读