Oracle中判斷字段是否爲數字

在咱們日常的開發中可能會遇到這樣的問題,就是判斷某一列是否所有由數字組成,咱們都知道oracle並無給咱們提供這樣一個現成的函數,那麼根據個人經驗我總結了兩個行之有效的方法(列名:column,表名:table):正則表達式

1.使用trim+translate函數:oracle

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函數:spa

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中的 一個,有關這方面更加詳細信息,請關注相關文檔。.net

總結一下,若是oracle支持regexp_like函數,推薦使用正則的方式,若是不支持則用trim+translate這種方式。code

 

轉:https://www.jb51.net/article/84912.htmregexp

相關文章
相關標籤/搜索