1樓:愛笑笑的蝸豬
pl/sql並沒有提供直接判斷的函式,所以自己寫乙個create or replace function isnumber(mystr varchar2) return number
isstr varchar2(400);
isnum number;
num number;
begin
--返回0,不是數字。1,是數字
isnum:=0;
str:=trim(mystr);
--如果輸入值為空,就返回不是數字。
if trim(str) is not null thenbegin
num:=to_number(str);
isnum:=1;
exception
when invalid_number thennull;
when others then
null;
end;
end if;
return isnum;
end;
oracle有沒有判斷乙個字串都是數字的函式呀
2樓:匿名使用者
1、建立測試表,
create table test_num(id varchar2(20),remark varchar2(20));
2、插入測試資料,部分值含回車換行符;
insert into test_num values('123a', '123a');
insert into test_num values('456', '456');
insert into test_num values('78.9', '78.9');
insert into test_num values('-123', '-123');
commit;
3、查詢表中全量資料;select t.*, rowid from test_num t;
4、編寫語句,只查詢欄位id全為數字的記錄,可以發現結果中只有一條記錄;
select t.*, rowid sec from test_num t where not regexp_like(id,'\d');
3樓:匿名使用者
額,正好以前寫過乙個
oracle本身沒有,得自定義乙個函式
create or replace function isnumber(p in varchar2)
return number
isresult number;
begin
result := to_number(p);
return 1;
exception
when value_error then return 0;
end;
呼叫select isnumber('abc123') from dual
或者select isnumber('123') from dual返回值為1,說明是數字,返回值是0,說明裡邊包含非數字的字元
4樓:匿名使用者
使用者oracle的正則函式regexp_instr就行了。
select regexp_instr('65','[1-9][0-9]?$') from dual ;
測試:sys@startrek> select regexp_instr('65','[1-9][0-9]?$') from dual ;
regexp_instr('65','[1-9][0-9]?$')
---------------------------------
1sys@startrek> select regexp_instr('0','[1-9][0-9]?$') from dual ;
regexp_instr('0','[1-9][0-9]?$')
--------------------------------
0sys@startrek> select regexp_instr('1d','[1-9][0-9]?$') from dual ;
regexp_instr('1d','[1-9][0-9]?$')
---------------------------------
0大於0表示為數字,等於0表示非數字。
oracle中有沒有乙個函式可以判斷乙個字串中是否包含數字
5樓:匿名使用者
使用 regexp_instr 函式, 可以實現這個 功能. 下面是例子:
sql> select * from test_reg_substr;
a-----------------------------------
abc123xyz
abc123xyz456
edward
找數字sql> select
2 regexp_instr (a,'[0-9]+') as a
3 from
4 test_reg_substr;
a----------44
0也就是 結果返回值 大於0 的, 就是包含數字了.
6樓:永恆谷愛戀
你可以看看正規表示式regexp_like 這個是可以判斷的
如何判斷 oracle 字串中的數字?oracle 是否有函式可以判斷
7樓:匿名使用者
沒有可以用translate來實現:
select translate('abc123e','0123456789',' ') from dual;
可以用這個返回的值和原值比較,也可以比較兩者長度
8樓:清璧興晨菲
額,正好以前寫過乙個
oracle本身沒有,得自定義乙個函式
create or replace function isnumber(p in varchar2)
return number
isresult number;
begin
result := to_number(p);
return 1;
exception
when value_error then return 0;
end;
呼叫select isnumber('abc123') from dual
或者select isnumber('123') from dual返回值為1,說明是數字,返回值是0,說明裡邊包含非數字的字元
oracle如何判斷某個欄位的值是不是數字
9樓:匿名使用者
1、建立測試表,
create table test_isnum(id number, value varchar2(20));
2、插入測試資料,
insert into test_isnum values(1,'a');
insert into test_isnum values(2,329);
insert into test_isnum values(4,'15');
insert into test_isnum values(6,'2c');
commit;
3、查詢表中所有記錄,select t.*, rowid from test_isnum t,
4、編寫sql,判斷value欄位,記錄為數字的內容,
select t.*,
case
when not regexp_like(value, '\d') then
'是'else
'否'end as "是否數字"
from test_isnum t;
10樓:最後天使毀滅
1. 這個問題itpub已討論很久,你搜一下。
2.不使用儲存過程,oracle沒有isnumber()之類的函式,因此至少你得寫乙個類似isnumber()的函式,這就是儲存過程。
3. 在這個函式中通過使用 to_number() 並捕捉異常來確定是否是數字。
11樓:匿名使用者
要先建立乙個函式:
create or replace function isnumber(p_column in varchar2) return number
isl_t number;
begin
l_t := to_number(p_column) ;
return 1;
exception when others thenreturn 0;
end;
測試,如果返回0,則代表不是數字,如果返回值為1則代表是數字。
select isnumber('100') from dual;
select isnumber('-100') from dual;
select isnumber('100.01') from dual;
select isnumber('a123') from dual;
利用oracle,編寫乙個函式,用於判斷輸入的字串中有幾個數字?這個函式該如何編寫啊?很著急……
12樓:匿名使用者
**如下:
create or replace function digits(str varchar2)
return number
asi number:=1;--迴圈變數
n number:=0;--統計結果
c char(10);
begin
while i<=length(str) loopc:=substr(str,i,1);
if ascii(c)>=48 and ascii(c)<=57 then
n:=n+1;
end if;
i:=i+1;
end loop;
return n;
end;
請教oracle下判斷為null的函式
13樓:王少波
select * from table t where t.a is null
如何判斷函式是否有反函式,判斷乙個函式是否有反函式的條件是什麼?
只要是一一對映就有copy反函式。一次函式 y kx b 有反函式,二次函式 y ax 2 bx c 沒有,因為y x 2,當y 1時,x 1或 1,y對應2個x,不是一一對映 函式存在反函式的充要條件是,函式的定義域與值域是一一對映 嚴格增 減 的函式一定有嚴格增 減 的反函式 反函式存在定理 一...
怎樣判斷函式是否是週期函式,怎樣判斷乙個函式是否是週期函式
如果有函式的影象 實際上更容易判斷一些 如果只有函式式 那麼如果有常量t使得 f x t f x 那麼f x 就是週期函式 的唯一標準是是否存在實數t,使得對於任意的x都是f x t f x 怎麼判斷是不是週期函式 15 判斷週期函式的方法,一般是根據定義。即對函式f x 如果存在常數t t 0 使...
oracle中怎麼判斷查詢的列中是否包含字母
看看下邊的語句可不可以 select case when regexp like 欄位名,a z a z then 包含字母 else 不包含字母 end from 表名字 正規表示式函式 regexp like 關鍵的引數是第二個 a z a z 其中.表示匹配任何單字元,換行符除外 a z 是小...