Zaawansowane integracja usługi wyrażeń

W tej sekcji podano przykłady wyrażeń zaawansowanych, składające się z kilka operatorów i funkcji.Jeśli wyrażenie jest używany w ograniczenie pierwszeństwa lub transformacja Podziel warunkowe, to musi dawać w wyniku logiczny.Czy ograniczeń, jednak nie dotyczy wyrażeń używanych w wyrażeniach właściwość, zmienne, kolumna pochodna transformacja lub kontener, pętli for.

The following examples use the AdventureWorks and the AdventureWorksDWMicrosoft SQL Server databases.Każdy przykład wskazuje tabele go używa.

logiczny Wyrażeń

  • W tym przykładzie użyto Produkt tabela.Wyrażenie jest oceniane jako wpis miesiąca w SellStartDate kolumna i zwraca wartość PRAWDA, jeżeli miesiąc jest czerwca lub nowszej.

    DATEPART("mm",SellStartDate) > 6
    
  • W tym przykładzie użyto Produkt tabela.Wyrażenie jest oceniane jako zaokrąglony wynik dzielenia ListPrice kolumna przez StandardCost kolumna, a funkcja zwraca wartość PRAWDA, jeśli wynik jest większy niż 1,5.

    ROUND(ListPrice / StandardCost,2) > 1.50
    
  • W tym przykładzie użyto Produkt tabela.Wyrażenie zwraca wartość PRAWDA, jeśli wszystkie trzy operacje mają wartość PRAWDA.Jeśli Rozmiar i kolumn BikeSize zmienna ma typów danych niezgodne, wyrażenie wymaga jawne rzutować zgodnie z informacjami w drugim przykładzie.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 or ToCurrencyCode kolumny jest równa wartości zmiennej i, gdy wartość AverageRate jest większa, wartość EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
    
  • W tym przykładzie użyto Waluta tabela.Wyrażenie zwraca wartość PRAWDA, jeśli pierwszy znak w Nazwa kolumna nie jest lub A.

    SUBSTRING(UPPER(Name),1,1) != "A"
    

    Następujące wyrażenie zawiera te same wyniki, ale jest on bardziej efektywne, ponieważ tylko jeden znak jest konwertowany na wielkie litery.

    UPPER(SUBSTRING(Name,1,1)) != "A"
    

Brak-logiczny wyrażenia

Wyrażenia typu nie są używane w transformacja pochodnego kolumna, wyrażenia właściwość i kontener pętli for.

  • W tym przykładzie użyto Kontakt tabela.Wyrażenie usuwa początkowe i końcowe spacje z Imię, MiddleName, and Nazwisko kolumny.Wyodrębnia jego pierwszej litery MiddleName kolumna, jeśli nie jest null, argument inicjał drugiego imienia i wartości w Imię and Nazwiskoi wstawia odpowiedni spacji między wartościami.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
    
  • W tym przykładzie użyto Kontakt tabela.Wyrażenie sprawdza poprawność wpisów w Zwrot grzecznościowy kolumna.Zwraca Zwrot grzecznościowy wpis lub pusty ciąg.

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""
    
  • W tym przykładzie użyto Produkt tabela.Wyrażenie konwertuje pierwszego znaku w Kolor kolumna na wielkie litery 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 Produkt tabela.Wyrażenie oblicza liczbę miesięcy produkt został sprzedany i zwraca ciąg "Nieznane", jeśli każda SellStartDate or the SellEndDate kolumna zawiera wartości NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
    
  • W tym przykładzie użyto Produkt tabela.Wyrażenie oblicza znacznik na StandardCost kolumna i zaokrągla wynik z dokładnością do dwóch.Wynik jest przedstawiany jako wartość procentową.

    ROUND(ListPrice / StandardCost,2) * 100