Update
如何使用 TO_NUMBER 函式更新表的列 使用 oracle pl/sql
希望你做得很好。我有一個具有這種結構的表:
Table1(Cust_No Varchar2(50), First_Name Varchar2(50), Last_Name Varchar2(50), Error_Code number(1), Error_Desc Varchar2(50))
首先,數據將插入列
Cust_No
中,我應該根據該列更新表的其他列。關鍵是所有列都cust_No
必須具有數字格式。例如Cust_No ='aa674'
沒有正確的格式。我需要對錶編寫一個查詢,並 為那些格式不正確的 Cust_Noupdate
設置 columnFirst_Name='--'
、 columnLast_Name = '--'
、 columnError_Code=1
和 column 。Error_Desc='Incorrect format'
我想使用TO_NUMBER()
函式,但它給了我無效的數字錯誤。我該如何解決這個問題?提前致謝
您可以使用 UDF 來檢測一個值是否可以被視為一個數字。就像是
CREATE OR REPLACE FUNCTION check_for_number( check_value IN VARCHAR2 ) RETURN VARCHAR2 DETERMINISTIC IS tmp NUMBER; BEGIN IF check_value IS NULL THEN RETURN 'Z'; ELSE tmp := TO_NUMBER( check_value ); RETURN 'Y'; END IF; EXCEPTION WHEN value_error THEN RETURN 'N'; WHEN OTHERS THEN RETURN '?'; END check_for_number;
with test as ( select 1 id, '123' val from dual union all select 2 , '123asd' from dual union all select 3 , 'asd' from dual union all select 4 , NULL from dual ) select id, val, check_for_number(val) from test; ID VAL CHECK_FOR_NUMBER(VAL) 1 123 Y 2 123asd N 3 asd N 4 - Z