2013-01-23 3 views
4

SSIS 파생 열의 아래 식을 복제하는 방법은 무엇입니까?SSIS 파생 열 (해당되는 경우 ... else)

SELECT CASE 
      WHEN LEN(column1) > 8 
       THEN 
        column1 
       ELSE 
        REPLICATE('0', 18 - LEN(column1)) + column1 
      END AS column1 
FROM myTable 

값의 아이폰에 8 미만 문자

답변

10

SSIS 표현 언어 인 경우 I 패드 0과 함께 컬럼 1의 값을 원은 삼원 운영자에게 ? :

(LEN([column1]) > 8) ? column1 : replicate("0", (18 - LEN([column1]))) + [column1] 

그 표현을 지원 이 작동해야하지만 REPLICATE 호출이 4k nvarchar 문자 (제한값)임을 나타내는 메타 데이터를 다시 제공하기 때문에 그렇지 않습니다. 그런 식으로 작동하지 못한다면, 주석을 달고 연쇄 출력하기 전에 표현식을 해킹 해 연결하기 전에 column1

더 쉬운 방법은 표현식에 항상 8 개의 앞자리 0을 추가하는 것입니다. 그 다음 오른쪽에서 잘라냅니다.

RIGHT(REPLICATE("0",8) + column1,8) 

예를 들어 18을 사용하는 것처럼 보이지만 개념은 동일합니다.

+0

8 개의 선행 제로의 패드와 같습니다. 나는 아직 그것을 보지 못했습니다 ... 제가 본 다른 구현보다 훨씬 간단합니다. –

+0

그 덕분에 billinkc에 감사드립니다. – Unal

0

이것은 오래된 질문이지만 오늘 같은 질문을 던지며 아래의 파생 열 표현은 저에게 효과적입니다. 특히 "REPLICATE"를 사용하여 원본 질문의 SQL 예제를 "복제"하지는 않지만 데이터 흐름에서 SSIS 파생 열을 사용하여 값을 채우기 위해 조금 더 간단하다는 것을 알았습니다. 간단한 "If/Else"문장의 예제. 원래 질문에서 SQL이 수행하는 것이기 때문에 저는 10 개의 0으로 채 웁니다.

(LEN(column1) > 8) ? column1 : ("0000000000" + (column1)) 
관련 문제