1. 程式人生 > >oracle判斷表中的某個字段是否為數字

oracle判斷表中的某個字段是否為數字

ora 所有 ebo 數字 pan acl 版本 span exp

本文分別介紹使用trim+translate函數或regexp_like函數判斷表中的某個字段是否為數字的方法

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判斷表中的某個字段是否為數字