Condividi tramite


? : (Condizionale) (Espressione SSIS)

Restituisce una delle due espressioni in base alla valutazione di un'espressione booleana. Se l'espressione booleana restituisce TRUE, viene valutata la prima espressione e il risultato è il risultato dell'espressione. Se l'espressione booleana restituisce FALSE, la seconda espressione viene valutata e il relativo risultato è il risultato dell'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 il boolean_expression restituisce NULL, il risultato dell'espressione è NULL. Se un'espressione selezionata, expression1 o expression2 è NULL, il risultato è NULL. Se un'espressione selezionata non è NULL, ma quella non selezionata è NULL, il risultato è il valore dell'espressione selezionata.

Se expression1 ed expression2 hanno lo stesso tipo di dati, il risultato è il tipo di dati. Le regole aggiuntive seguenti si applicano ai tipi di risultati:

  • Il tipo di dati DT_TEXT richiede che expression1 e expression2 abbiano la stessa tabella codici.

  • La lunghezza di un risultato con il tipo di dati DT_BYTES è la lunghezza dell'argomento più lungo.

Il set di espressioni, expression1 ed expression2 deve restituire tipi di dati validi e seguire una di queste regole:

  • Numeric Sia expression1 che expression2 devono essere un tipo di dati numerici. 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 altre informazioni, vedere Tipi di dati nelle espressioni di Integration Services.

  • Stringa Sia expression1 che expression2 devono essere un tipo di dato stringa: DT_STR o DT_WSTR. Le due espressioni possono restituire tipi di dati string diversi. Il risultato ha il tipo di dati DT_WSTR e una lunghezza pari all'argomento più lungo.

  • Data, ora o data/ora 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.

    Annotazioni

    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 altre 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 altre informazioni sui tipi di dati, vedere Tipi di dati di Integration Services.

Esempi di espressione

In questo esempio viene illustrata un'espressione che restituisce in modo condizionale savannah o unknown.

@AnimalName == "Elephant"? "savannah": "unknown"  

Questo esempio mostra un'espressione che fa riferimento a una colonna ListPrice . ListPrice ha il tipo di dati DT_CY. L'espressione moltiplica in modo condizionale ListPrice per .2 o .1.

ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1  

Vedere anche

Precedenza e associatività degli operatori
Operatori (espressione SSIS)