Fusione esplicita e implicita

Il casting implicito è l'uso di regole interne per cercare di valutare ed elaborare dichiarazioni che contengono tipi di dati misti. Questo può essere utile quando si utilizza una funzione che si aspetta un particolare tipo di dati o quando si esegue una query che confronta valori simili ma di tipo diverso. Il linguaggio SQL di Netezza Performance Server è allineato allo standard SQL per il casting implicito dei tipi di dati.

Ad esempio, nella seguente istruzione, le due espressioni possono essere nomi di colonne, letterali o espressioni più complesse:
SELECT * FROM tbl WHERE <character expression> > <integer expression>;
Poiché un'espressione di carattere viene confrontata con un'espressione intera, l'espressione di carattere viene implicitamente lanciata come un intero.
A volte il casting implicito fallisce perché i dati non possono essere analizzati in modo da essere conformi al nuovo tipo di dati. (Ad esempio, la stringa di caratteri "abc" non può essere analizzata come un numero intero o una data) In questi casi, utilizzare la funzione 'cast per eseguire il cast esplicito dei dati nel tipo di dati appropriato. Ad esempio, se la colonna età contiene dati di carattere che rappresentano valori interi, si può eseguire il cast di tali dati come dati interi, in questo modo:
SELECT * FROM tbl WHERE cast(age as integer) > 3;
Esempi di messaggi di errore emessi quando il casting implicito fallisce:
  • Quando un'espressione non può essere analizzata come un intero:
    ERRORE: pg_atoi: errore in "abc": impossibile analizzare "abc"
  • Quando un'espressione di carattere non può essere analizzata come valore di data:
    ERRORE: rappresentazione esterna della data 'abc' errata
    Questo errore può derivare da affermazioni come:
    • SELECT * FROM tbl WHERE <date expression> = <character expression>;
    • INSERT INTO <table having one column of type date> SELECT <character expression> FROM <another table>;
  • Quando un'espressione di carattere non può essere analizzata come valore numerico:
    ERRORE: 65524: errore nell'intervallo di precisione
    Ad esempio, quando un'espressione tenta di moltiplicare un numerico(24,4) per un varchar(50), il sistema tenta di lanciare implicitamente il varchar in un numerico(24,4). Tuttavia, se la varchar contiene troppe cifre, può causare un errore di precisione.
Se si riceve uno di questi messaggi di errore, si deve cercare una situazione in cui un particolare tipo di dati non è valido per l'operazione che si sta tentando.