Udostępnij za pośrednictwem


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
    

Zasoby zewnętrzne

Artykuł techniczny SSIS wyrażenie Cheat arkusz, na pragmaticworks.com