Nwlapcug.com


Come trovare un numero non valido in una tabella Oracle

I numeri non validi nelle tabelle Oracle possono essere frustrante e ben formato codice a comportarsi in modi imprevisti e indesiderati, e provocare l'errore Oracle ORA-01722. L'errore numero non valido in Oracle si pone, a volte in maniera apparentemente casuale, quando codice SQL è scritto che usi un carattere basato su colonna per operazioni matematiche e un carattere non numerico viene rilevato.

A peggiorare le cose, questo errore non si verifica sempre anche se sono soddisfatte le condizioni per esso. Questo è principalmente dovuto al modo che una tabella viene attraversata quando esso viene analizzato per la corrispondenza dei dati.

Istruzioni

Evitare l'errore prima che accada

1

Creare una tabella con colonne correttamente definite. Per esempio:

CREATE TABLE numbers_and_words

(number_col come numero,

word_col come varchar2(100))

2

Programmare l'applicazione per inserire dati numerici nei dati di carattere e colonna di number_col nella colonna word_col.

3

Creare una condizione di controllo nell'applicazione che assicura dati numerici non viene passati alla colonna number_col. Oracle permetterà la rappresentazione di caratteri di un numero per essere archiviati in una colonna di carattere.

Lavorare intorno ad esso

4

Scrivere una funzione per catturare dati non numerici. Un esempio:

CREARE la funzione is_numeric (str IN VARCHAR2)

NUMERO DI RITORNO

È

num numero;

BEGIN

num: = TO_NUMBER (str);

RETURN 1;

ECCEZIONE

QUANDO GLI ALTRI POI

RETURN 0;

FINE;

5

Scrivere una vista che utilizza la funzione per creare una rappresentazione della tabella senza dati non numerici. Supponendo che il nome della tabella è t1 e la colonna con i dati misti è chiamata "mixed_col", una vista solo numerico potrebbe essere scritta come segue:

CREATE VIEW numbersonly come

SELECT mixed_col FROM t1

DOVE is_numeric(mixed_col) = 1

6

Utilizzare la visualizzazione di numbersonly nelle query che dovete fare operazioni di numerica sulla colonna. Per esempio:

Selezionare * da numbersonly

DOVE mixed_col > 35

Consigli & Avvertenze

  • Definire i vincoli check dettagliato sulle colonne per evitare l'inserimento di dati indesiderati nelle tabelle.