Zaawansowana integracja usługi wyrażeń
Ta sekcja zawiera przykłady wyrażeń zaawansowane, łączących wiele funkcji i operatorów.Jeśli wyrażenie jest używany w ograniczenie pierwszeństwa lub transformacja warunkowe podziel go musi dawać w wyniku wartość logiczną.Ograniczenia, jednak nie dotyczą wyrażeń używanych w właściwość wyrażenia, zmienne, transformacja kolumn pochodnych lub kontener dla pętli.
W następujących przykładach użyto AdventureWorks2008R2 bazy danych.Każdy przykład identyfikuje używa tabel.
wartość logicznaWyrażenia
W tym przykładzie użyto Product tabela.Wyrażenie wpis miesiąca w SellStartDate kolumna i zwraca wartość PRAWDA, jeśli miesiąca czerwca lub nowszej.
DATEPART("mm",SellStartDate) > 6
W tym przykładzie użyto Product tabela.Wyrażenie zaokrąglony wynik podziału ListPrice kolumna przez StandardCost kolumna i zwraca wartość PRAWDA, jeśli wynik jest większa niż 1,5.
ROUND(ListPrice / StandardCost,2) > 1.50
W tym przykładzie użyto Product tabela.Wyrażenie zwraca wartość PRAWDA, jeśli wszystkie trzy operacje mają wartość PRAWDA.Jeśli Size kolumna i BikeSize zmienna ma niezgodnych typach danych, wyrażenie wymaga jawnej rzutować jak pokazano drugi przykład.Oddanych do DT_WSTR zawiera długość ciąg.
MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != (DT_WSTR,10)@BikeSize
W tym przykładzie użyto CurrencyRate tabela.Wyrażenie porównuje wartości w tabelach i zmiennych.Zwraca wartość PRAWDA, jeśli wpisy w FromCurrencyCode lub ToCurrencyCode kolumn są równe wartości zmiennych i jeżeli wartość w AverageRate jest większa, wartość w EndOfDayRate.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
W tym przykładzie użyto Currency tabela.Wyrażenie zwraca wartość TRUE, jeżeli pierwszy znak w Name Kolumna nie jest lub A.
SUBSTRING(UPPER(Name),1,1) != "A"
Następujące wyrażenie zawiera te same wyniki, ale jest bardziej efektywne, ponieważ tylko jeden znak jest konwertowany na wielkie litery.
UPPER(SUBSTRING(Name,1,1)) != "A"
Nie-wartość logiczna wyrażeń
Wyrażenia wartość logiczna nie są używane w transformacja kolumn pochodnych, właściwość wyrażeń i kontener dla pętli.
W tym przykładzie użyto Person tabela.Wyrażenie usuwa początkowe i końcowe spacje z FirstName, MiddleName, i LastName kolumny.Rozpakowuje pierwszą literę MiddleName kolumna, jeśli nie jest null, łączy w środku początkowej i wartości w FirstName i LastNamei wstawia odpowiednie spacje między wartościami.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
W tym przykładzie użyto Person tabela.Wyrażenie sprawdza poprawność wpisów w Title kolumna.Zwraca Title wpisu lub pusty ciąg.
(Title == "Sr." || Title == "Ms." || Title == "Sra." || Title == "Mr.") ? Title : ""
W tym przykładzie użyto Product tabela.Wyrażenie konwertuje pierwszego znaku w Color Kolumna wielkie i konwertuje pozostałe znaki na małe litery.
UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))
W tym przykładzie użyto Product tabela.Wyrażenie oblicza liczbę miesięcy produkt został sprzedany i zwraca ciąg "Nieznane" Jeśli SellStartDate lub SellEndDate Kolumna zawiera wartości NULL.
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
W tym przykładzie użyto Product tabela.Wyrażenie oblicza adiustację na StandardCost kolumna i wynik z dokładnością dwóch zaokrągla.Wynik jest przedstawiany jako wartość procentową.
ROUND(ListPrice / StandardCost,2) * 100