明白了從字符串中提取數字以下PL/SQL函數:顯示「NULL」,而不是在PL/SQL函數空行
CREATE FUNCTION extract_number (
in_number VARCHAR2)
RETURN NUMBER IS
BEGIN
RETURN regexp_replace(in_number, '[^[:digit:]]', '');
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
需要把空在那裏沒有數值被發現(而不是隻是空行)。例如:
得到的表:
create table tab2 (val varchar2(100));
insert into tab2 (val) values ('2133jdhfjshd4');
insert into tab2 (val) values ('afafaf');
insert into tab2 (val) values ('skdjfj6787887hhh');
insert into tab2 (val) values ('324824898');
insert into tab2 (val) values ('4jh4jhh4');
commit;
這是從功能的輸出:
21334
6787887
324824898
444
在第二行我需要 'NULL' 放置。
NO_DATA_FOUND無法正常工作。請告訴我該怎麼辦?
警告:不要亂用數據類型!如果返回值爲NULL,那麼爲什麼要用四個字母的字符串替換?正如您已經看到的那樣,使用其中一種建議的解決方案,您必須將返回的數據類型 - 從編號更改爲varchar2。據推測,像這樣的函數將被用來從字符串中提取數字,以用於進一步的計算 - **作爲數字**。改變函數返回varchar2,而其他很多事情都會中斷。如果您需要在報告中顯示「NULL」,請在報告圖層中執行,而不是在功能本身中執行。 – mathguy