? : (Warunkowe) (Wyrażenia SSIS)
Zwraca jedną z dwóch wyrażeń oparte na ocenę logiczny wyrażenia.Jeśli logiczny wyrażenie zostanie oszacowane jako PRAWDA, a następnie pierwsze wyrażenie jest oceniane, a wynik jest wynik wyrażenia.Jeśli wyrażenie warunkowe ma wartość FAŁSZ sprawdzane jest drugie wyrażenie, a jej wynik jest wynikiem wyrażenia.
boolean_expression?expression1:expression2
Argumenty
boolean_expression
Dowolne prawidłowe wyrażenie, którego wynikiem jest PRAWDA, FAŁSZ lub wartość NULL.expression1
Jest ważne w każdym wyrażenie.expression2
Jest ważne w każdym wyrażenie.
Typy wynik
Typ danych expression1 lub expression2.
Remarks
Jeśli boolean_expression wynikiem jest wartość NULL, wynik wyrażenie jest NULL. Jeśli wybrany wyrażenie, albo expression1 lub expression2 ma wartość NULL, wynik jest NULL. Jeśli zaznaczone wyrażenie nie jest NULL, ale nie wybrano jeden ma wartość NULL, wynik jest wartością zaznaczonego wyrażenia.
Jeśli expression1 i expression2 mają ten sam typ danych, wynik jest typu danych. Obowiązują następujące reguły dodatkowe typy wynik:
Typ danych DT_TEXT wymaga, aby expression1 i expression2 mieć tej samej strona kodowa.
Długość wyniku o typie danych DT_BYTES jest długość argumentu dłużej.
Wyrażenie zestaw, expression1 i expression2, musi dawać w wyniku typów danych i wykonaj jedną z tych reguł:
Numeryczne Oba expression1 i expression2 musi być typ danych numerycznych. Punkt przecięcia z typami danych musi być typ danych numerycznych, określone w przepisach dotyczących numeryczne konwersji niejawnych, który wykonuje modułu szacującego wyrażenie.Punkt przecięcia dwóch typów danych numerycznych nie może mieć wartości null.Aby uzyskać więcej informacji zobaczNiejawna konwersja typu danych w wyrażeniach.
Ciąg znaków Oba expression1 i expression2 musi być typu ciąg danych: DT_STR lub DT_WSTR. Dwa wyrażenia mogą być ciąg różnych typów danych.Wynik ma typ danych DT_WSTR o długości dłużej argumentu.
Data, godzina lub Data/Godzina Oba expression1 i expression2 musi być jedną z następujących typów danych: DT_DBDATE, DT_DATE, DT_DBTIME, DT_DBTIME2, DT_DBTIMESTAMP, DT_DBTIMESTAMP2, DT_DBTIMESTAPMOFFSET lub DT_FILETIME.
Uwaga
System nie obsługuje porównania między wyrażenie danych czas wpisz typ i wyrażenie daty lub danych Data/Godzina.System generuje błąd.
Podczas porównywania wyrażenia, system zastosuje następujące reguły konwersji w podanej kolejności:
Kiedy dwa wyrażenia dawać w wyniku tego samego typu danych, porównania tego typu danych jest wykonywane.
Jeśli jedno wyrażenie jest to typ danych DT_DBTIMESTAMPOFFSET, inne wyrażenia są niejawnie konwertowane na DT_DBTIMESTAMPOFFSET i wykonywane jest porównanie DT_DBTIMESTAMPOFFSET.Aby uzyskać więcej informacji zobaczTypy danych usług integracja w wyrażeniach.
Jeśli jedno wyrażenie jest to typ danych DT_DBTIMESTAMP2, inne wyrażenia są niejawnie konwertowane na DT_DBTIMESTAMP2 i DT_DBTIMESTAMP2, wykonywane jest porównanie.
Jeśli jedno wyrażenie jest to typ danych DT_DBTIME2, inne wyrażenia są niejawnie konwertowane na DT_DBTIME2 i wykonywane jest porównanie DT_DBTIME2.
Jeśli jedno wyrażenie ma innego typu niż DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 lub DT_DBTIME2, zanim są one porównywane wyrażenia są konwertowane na DT_DBTIMESTAMP typu danych.
Podczas porównywania wyrażenia, system wykonuje następujących założeniach:
Jeśli każde wyrażenie jest to typ danych, który zawiera ułamków sekund, system zakłada, że typ danych z najmniejszą liczbę cyfr dziesiętnych dla ułamków sekund ma zer dla pozostałych znaków.
Jeśli każde wyrażenie jest to typ danych Data, ale tylko jeden ma przesunięcie strefy czasowej, system zakłada, że typ danych Data bez przesunięcie strefy czasowej jest w formacie uniwersalnego czas koordynowanego (UTC).
Aby uzyskać więcej informacji na temat typów danych zobacz Typy danych usług integracja.
Przykłady
W tym przykładzie przedstawiono wyrażenie warunkowe do savannah lub unknown.
@AnimalName == "Elephant"? "savannah": "unknown"
W tym przykładzie przedstawiono wyrażenie, które odwołuje się ListPrice kolumna.ListPrice ma typ danych DT_CY.Wyrażenie warunkowe mnoży. ListPrice .2 lub.1.
ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1