Condividi tramite


Conversione implicita dei tipi di dati nelle espressioni

La conversione implicita di un tipo di dati si verifica quando l'analizzatore di espressioni converte automaticamente i dati da un tipo a un altro. Se ad esempio un valore smallint viene confrontato con un valore int, il valore smallint verrà implicitamente convertito in un valore int prima dell'esecuzione del confronto.

L'analizzatore di espressioni non può eseguire una conversione implicita dei dati se gli argomenti e gli operandi hanno tipi di dati incompatibili. Inoltre, l'analizzatore di espressioni non può convertire implicitamente alcun valore in un valore booleano. Gli argomenti e gli operandi devono essere invece convertiti esplicitamente utilizzando l'operatore cast. Per ulteriori informazioni, vedere Cast (SSIS).

Nella figura seguente viene illustrato il tipo di risultato delle conversioni implicite delle operazioni BINARY. L'intersezione di colonna e riga in questa tabella è il tipo di risultato di un'operazione binaria con operandi di tipo sinistra (Da) e destra (A).

Conversione implicita del tipo di dati tra tipi di dati

L'intersezione tra un valore integer con segno e un valore integer senza segno è un valore integer con segno potenzialmente maggiore di entrambi gli argomenti.

Gli operatori confrontano stringhe, date, valori booleani e altri tipi di dati. Prima che un operatore confronti due valori, l'analizzatore di espressioni esegue alcune conversioni implicite. Per ulteriori informazioni, vedere gli argomenti seguenti:

Una funzione che utilizza un singolo argomento restituisce un risultato con lo stesso tipo di dati dell'argomento, con le eccezioni seguenti:

  • Le funzioni DAY, MONTH e YEAR accettano un valore date e restituiscono un valore integer (DT_I4).

  • La funzione ISNULL accetta un'espressione con qualsiasi tipo di dati SSIS e restituisce un valore booleano (DT_BOOL).

  • Le funzioni SQUARE e SQRT accettano un'espressione numerica e restituiscono un valore numerico non integrale (DT_R8).

Se gli argomenti sono dello stesso tipo, anche il risultato sarà di tale tipo. L'unica eccezione è costituita dal risultato di un'operazione binaria su due valori con tipo di dati DT_DECIMAL, che restituisce un risultato con tipo di dati DT_NUMERIC.