Update

如何使用 TO_NUMBER 函式更新表的列 使用 oracle pl/sql

  • September 3, 2019

希望你做得很好。我有一個具有這種結構的表:

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設置 column First_Name='--'、 column Last_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

引用自:https://dba.stackexchange.com/questions/246764