Function is_numeric() in Oracle


Ho avuto la necessità di controlalre se un campo in formato varchar o char è un numero.

Per far ciò in oracle la funzione to_number non è abbastanza, necessitiamo infatti di una funzione creata apposta per gestire l’eccezione di errore che genererebbe nel caso incontrasse un carattere al posto di un numero

 Questa è la funzione:

create function is_numeric(str in varchar2) return number is
   v_number number(
38);
begin
   v_number := to_number(str);
  return v_number;
  exception when value_error then
  return
0;
end is_numeric;

Questa funzione restituisce il valore numerico ove esistente, altrimenti restituisce 0.

Function is_numeric() in Oracle ultima modifica: 2007-12-10T12:24:19+00:00 da Enrico

1 Comments.

  1. Cosimo D'Angelo

    La funzione proposta is_numeric è ambigua, nell’intento di voler restituire il valore di trasformazione della funzione to_number ed il relativo esito di errore. Infatti, 0 è contemporaneamente il risultato della trasformazione di to_number ed il return di errore.
    Una più corretta formulazione può essere come segue, limitando il risultato alla codizione normale (è numerico) 0, e quella di errore 1.

    create function is_numeric(str in varchar2) return number is
    v_number number(38);
    begin
    v_number := to_number(str);
    return 0;
    exception when value_error then
    return 1;
    end is_numeric;