程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中判斷字段是否為數字,oracle字段

Oracle中判斷字段是否為數字,oracle字段

編輯:Oracle教程

Oracle中判斷字段是否為數字,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中的 一個,有關這方面更加詳細信息,請關注相關文檔。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved