? : (condizionale) (espressione SSIS)
Viene restituita una di due espressioni in base alla valutazione di un'espressione booleana. Se l'espressione booleana restituisce TRUE, verrà valutata la prima espressione e il risultato sarà il risultato di tale espressione. Se l'espressione booleana restituisce FALSE, verrà valutata la seconda espressione e il risultato sarà il risultato di tale espressione.
Sintassi
boolean_expression?expression1:expression2
Argomenti
boolean_expression
Qualsiasi espressione valida che restituisce TRUE, FALSE o NULL.expression1
Qualsiasi espressione valida.expression2
Qualsiasi espressione valida.
Tipi restituiti
Tipo di dati di expression1 o expression2.
Osservazioni
Se boolean_expression restituisce NULL, il risultato dell'espressione sarà NULL. Se un'espressione selezionata, expression1 o expression2 è NULL, il risultato sarà NULL. Se l'espressione selezionata non è NULL, ma quella non selezionata è NULL, il risultato sarà il valore dell'espressione selezionata.
Se expression1 e expression2 hanno lo stesso tipo di dati, anche il risultato sarà di tale tipo. Ai tipi di risultato si applicano le seguenti ulteriori regole:
Il tipo di dati DT_TEXT richiede che expression1 e expression2 abbiano la stessa tabella codici.
La lunghezza di un risultato con tipo di dati DT_BYTES corrisponde a quella dell'argomento più lungo.
Il set di espressioni, expression1 e expression2, devono restituire tipi di dati validi e seguire una di queste regole:
Numeric Il tipo di dati deve essere numeric sia per expression1 che per expression2. L'intersezione dei tipi di dati deve essere un tipo di dati numeric come specificato dalle regole relative alle conversioni numeriche implicite eseguite dall'analizzatore di espressioni. L'intersezione dei due tipi di dati numeric non può essere Null. Per ulteriori informazioni, vedere Tipi di dati nelle espressioni di Integration Services.
String Sia expression1 che expression2 devono avere un tipo di dati string, ovvero DT_STR o DT_WSTR. Le due espressioni possono restituire tipi di dati string diversi. Il risultato ha tipo di dati DT_WSTR e lunghezza pari a quella dell'argomento più lungo.
Date, Time o Date/Time Sia expression1 che expression2 devono restituire uno dei tipi di dati seguenti: DT_DBDATE, DT_DATE, DT_DBTIME, DT_DBTIME2, DT_DBTIMESTAMP, DT_DBTIMESTAMP2, DT_DBTIMESTAPMOFFSET o DT_FILETIME.
[!NOTA]
Il sistema non supporta i confronti tra un'espressione che restituisce un tipo di dati di ora e un'espressione che restituisce una data o un tipo di dati di data/ora. Viene generato un errore.
In caso di confronto delle espressioni, vengono applicate le regole di conversione seguenti nell'ordine elencato:
Quando le due espressioni restituiscono lo stesso tipo di dati, viene effettuato un confronto del tipo di dati.
Se un'espressione è un tipo di dati DT_DBTIMESTAMPOFFSET, l'altra espressione viene convertita implicitamente in DT_DBTIMESTAMPOFFSET e viene eseguito un confronto DT_DBTIMESTAMPOFFSET. Per ulteriori informazioni, vedere Tipi di dati nelle espressioni di Integration Services.
Se un'espressione è un tipo di dati DT_DBTIMESTAMP2, l'altra espressione viene convertita implicitamente in DT_DBTIMESTAMP2 e viene eseguito un confronto DT_DBTIMESTAMP2.
Se un'espressione è un tipo di dati DT_DBTIME2, l'altra espressione viene convertita implicitamente in DT_DBTIME2 e viene eseguito un confronto DT_DBTIME2.
Se un'espressione è di un tipo diverso da DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 o DT_DBTIME2, le espressioni vengono convertite nel tipo di dati DT_DBTIMESTAMP prima del confronto.
In caso di confronto delle espressioni, il sistema presuppone quanto segue:
Se ogni espressione è un tipo di dati che include secondi frazionari, il sistema presuppone che il tipo di dati con il numero di cifre più basso per secondi frazionari presenti un valore pari a zero per le cifre rimanenti.
Se ogni espressione è un tipo di dati relativo alla data, ma solo una dispone di una differenza di fuso orario, il sistema presuppone che il tipo di dati senza la differenza di fuso orario sia espresso in formato UTC (Coordinated Universal Time).
Per ulteriori informazioni sui tipi di dati, vedere Tipi di dati di Integration Services.
Esempi di espressione
In questo esempio viene illustrata un'espressione tramite cui viene restituito savannah o unknown, a seconda del valore restituito dalla condizione.
@AnimalName == "Elephant"? "savannah": "unknown"
In questo esempio viene illustrata un'espressione che fa riferimento a una colonna di nome ListPrice. ListPrice ha tipo di dati DT_CY. Tramite l'espressione ListPrice viene moltiplicato per 0,2 o 0,1, a seconda del valore restituito dalla condizione.
ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1
In questo esempio viene illustrata un'espressione con un operatore condizionale annidato che fa riferimento anche a una colonna di nome ListPrice. Tramite l'espressione ListPrice viene moltiplicato per 0,2, 0,3 o 0,1, a seconda del valore restituito dalla condizione.
ListPrice > 35.00 ? ListPrice * .2 : (ListPrice > 100.00 && ListPrice < 350.00 ? ListPrice * .3 : ListPrice * .1)
Vedere anche
Concetti
Precedenza e associatività degli operatori