Condividi tramite


Conversione dei tipi di dati nelle espressioni

Esistono due tipi di conversione dei dati:

  • Le conversioni implicite, in cui 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.
  • Conversioni esplicite, in cui viene utilizzato il cast per convertire un valore, ad esempio una variabile locale, una colonna o un'altra espressione, da un tipo di dati a un altro. 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.

Nelle operazioni che combinano un valore integer a 8 byte senza segno e un valore integer con segno è necessario un cast esplicito per identificare il formato del risultato.

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.

Tramite le funzioni è inoltre possibile confrontare stringhe, date e valori booleani. Prima che una funzione confronti due valori, l'analizzatore di espressioni esegue le conversioni implicite seguenti:

  • Le stringhe con tipo di dati DT_STR vengono convertite nel tipo di dati DT_WSTR.
  • I valori di data e ora vengono convertiti nel tipo di dati DT_DBTIMESTAMP.

L'analizzatore di espressioni non può convertire implicitamente alcun valore in un valore booleano. L'espressione deve includere pertanto un'operazione di cast esplicito. Per ulteriori informazioni, vedere Cast (SSIS).

[!NOTA] I valori booleani sono valori logici, non numeri. Benché possano essere visualizzati come numeri in alcuni ambienti, i valori booleani non vengono archiviati come numeri e i vari linguaggi di programmazione, così come i metodi di .NET Framework, li rappresentano come valori numerici in modi diversi. Le funzioni di conversione disponibili in Visual Basic, ad esempio, convertono True in -1, mentre il metodo System.Convert.ToInt32 di .NET Framework converte True in +1. Il linguaggio delle espressioni di Integration Services converte True in -1. Per evitare errori o risultati imprevisti, è consigliabile non scrivere codice basato su particolari valori numerici per True e False. Quando possibile, è consigliabile limitare l'utilizzo delle variabili booleane ai valori logici per i quali sono progettate.

In un'espressione è possibile utilizzare anche argomenti e operandi con tipi di dati incompatibili, ma in questo caso l'analizzatore di espressioni non può eseguire una conversione implicita dei dati. L'analizzatore di espressioni non consente ad esempio il confronto tra un operando con tipo di dati string e un operando con tipo di dati numeric. Affinché sia possibile eseguire tale confronto, è necessario eseguire il cast esplicito dell'operando di tipo numeric al tipo di dati string. Il linguaggio delle espressioni include un operatore cast che supporta il cast tra tipi di dati string, numeric, date e binary. Per ulteriori informazioni, vedere Cast (SSIS).

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Contenuto modificato:
  • Aggiunta di suggerimenti per l'utilizzo di valori booleani.

Vedere anche

Altre risorse

Concetti fondamentali sulle espressioni in Integration Services

Guida in linea e informazioni

Assistenza su SQL Server 2005