oracle函式 判斷乙個字段是否純數字

2021-08-11 10:25:46 字數 1573 閱讀 4946

拿到乙個字串,需要判斷下是否純數字組成

方法1 :

這個方法是之前乙個oracle群裡的同學給寫的。直接套用過來了

這個方法是使用exception

create function f_if_number(p_str in varchar2)

return number

ase_error exception;

pragma exception_init(e_error, -06502);

begin

return to_number(p_str);

exception

when e_error then

return null;

end;j

方法2 :

這個方法是使用translate函式進行替換

create

orreplace

function

is_number(str

varchar2)

return

number is

v_str

varchar2

(2000);

begin

v_str :=

replace

(translate

(str,

'0123456789'

,'0000000000'

),'0',''

); ifv_str

isnull

then

return0;

else

return1;

endif;

end;

方法3 :

這個方法,利用正規表示式即可

create

orreplace

function

is_number(str

varchar2)

return

number is

begin

ifregexp_like(str,

'^[0-9]+$')

then

return0;

else

return1;

endif;

end;

方法4:

這裡不是乙個方法,其實也是在用exception

declare

v_sql varchar2(100) := '&shuru';

not_char exception;

pragma exception_init(not_char, -01722);

ha number;

begin

select to_number(v_sql) into ha from dual;

dbms_output.put_line(ha);

exception

when not_char then

dbms_output.put_line('輸入非純數字');

when others then

dbms_output.put_line('發生其它錯誤');

end;

oracle判斷乙個字元是否是數字

方法一 返回值為null的表示字串,返回值大於等於1的表示有非數字字元 select lengthb ltrim 1248346 0123456789 from dual 或 select lengthb rtrim 1248346a 0123456789 from dual 方法二 返回值為nul...

mybati查詢乙個字段出現的是另乙個欄位的值

使用mybatis的時候,查詢列表進行展示,joint bank number欄位總是為空 但是area欄位是沒有資料的,確有資料,很奇怪 最後我只查詢joint bank number欄位,發現,除了area欄位,所有的字段都是空,但是我查的是joint bank number欄位啊,然後我就在考...

mysql判斷乙個欄位不包含中文

中文 2個位元組,英文或數字 1個位元組,因此我們用mysql中兩個函式比較位元組和字元的長度是否相等來判斷是否包含中文 select from user where char length name length name 如果想過濾掉空字串或限制下長度可以加上長度判斷 select from u...