2011-01-19 27 views
12

Używam zadania kolumny pochodnej do zmiany danych kolumny za pomocą instrukcji CASE WHEN. Jednak muszę być w stanie powiedzieć ..Czy jest możliwe wykonanie instrukcji "LIKE" w wyrażeniu SSIS?

SQL KOD byłoby:

CASE WHEN Column01 LIKE '%i%' THEN '0' ELSE '1' END 


W SSIS Expression Language że byłoby:

[Column01] == "i" ? "0" : "1" (that's for equals i, not, LIKE %i%. 


Czy go czy można użyć operatora LIKE?

Odpowiedz

10

Wierzę, że będziesz chciał use the FINDSTRING function.

FINDSTRING (character_expression, searchstring, wystąpienie)

...

FINDSTRING zwraca null jeśli albo character_expression lub searchstring są nieważne.

+0

Dzięki! Byłem w stanie napisać to, używając tego, co mi dałeś, mam nadzieję, że wyniki będą poprawne. ISNULL ([Column])? "1":! ISNULL (FINDSTRING ([Column], "I", 1))? "0": "1" - Jeśli kolumna 1 ma wartość null, to 1 .. THEN jeśli kolumna 1 ma wartość I, zwraca wartość, a zatem nie jest pusta, a więc wyświetli 0, w przeciwnym razie 1. – iamtheratio

16

Wiem, że to stare pytanie, ale w dzisiejszych czasach znalazłem dobrą odpowiedź w Internecie.

Jeśli chcesz wyrażenie Zawieralike '%value%' można użyć:

FINDSTRING(col, "value", 1) > 0` 

Jeśli chcesz wyrażenie dla start zlike 'value%' można użyć:

FINDSTRING(col, "value", 1) == 1 

i wreszcie, jeśli chcesz wyrażenie dla Koniec zlike '%value' możesz użyć:

REVERSE(LEFT(REVERSE(col), X)) == "value" 

Więcej szczegółów wyglądać to użyteczne źródło: Basic SSIS Equivalents to T-SQL's LIKE