2016-10-25 5 views
0

인포매티카를 사용 중입니다. 문자열의 쉼표를 기반으로 문자열을 분할하고 쉼표 앞뒤의 모든 항목을 다른 포트/열로 반환하고 싶습니다. 예를 들어, I는Informatica PowerCenter Designer에서 문자열 분할

'Answer1, Answer2, Answer3' 

가 Expresssion 변환에 전달되는 문자열을 각 값/응답 다른 포트/컬럼으로 전달 될 수 있도록 I는 싶다. 내가 가진 문제는 때때로 식 변환에 전달되는 문자열에 하나의 값 ('Answer1') 또는 두 개의 값 ('Answer1, Answer2') 또는 여러 값 ('Answer1, Answer2, Answer3, Answer4, Answer5') 만있는 것입니다. 하지만 필요한 것은 처음 세 값 (또는 임의의 3 값)을 다른 포트/열로 전달해야하며 값이 하나뿐이라면 다른 두 포트/열은 null이어야합니다.

문자열 변환에 전달할 수있는 다른 종류의 문자열을 설명하는 방법을 모르므로 문자열에 쉼표가없고 때로는 많이있는 경우가 있으므로 쉼표. 모든 도움을 주실 수 있습니다

답변

4

일반 표현 패턴을 기반으로 문자열의 일부를 추출하는 REG_EXTRACT 함수를 사용하여 수행 할 수 있습니다.

inp_ANSWERS가 표현식 변환에서 입력 포트라고 가정 해 보겠습니다. 다음과 같은 식으로 3 개 개의 출력 포트 만들기 :이 3 OUPUT 열에 처음 3 쉼표로 분리 된 값을 넣어 것입니다

out_ANS1:= REG_EXTRACT(inp_ANSWERS ,'([^,]*),?([^,]*),?([^,]*).*',1) 
out_ANS2:= REG_EXTRACT(inp_ANSWERS ,'([^,]*),?([^,]*),?([^,]*).*',2) 
out_ANS3:= REG_EXTRACT(inp_ANSWERS ,'([^,]*),?([^,]*),?([^,]*).*',3) 

. 값이 3 개 미만이면 나머지 열에 공백이 생깁니다.