2016-10-25 45 views
0

我正在使用Informatica,我想根據字符串中的逗號分割一個字符串,並將逗號前/後的所有內容返回給不同的端口/列。舉例來說,我有在Informatica PowerCenter Designer中分割字符串

'Answer1, Answer2, Answer3' 

被傳遞到Expresssion轉型的字符串,我想每個值/答案傳遞到不同的端口/列。我遇到的問題是有時傳遞給表達式轉換的字符串只有一個值('Answer1')或兩個值('Answer1,Answer2')或許多值('Answer1,Answer2,Answer3,Answer4,Answer5')但我需要的是前三個值(或任何3個值)傳遞到不同的端口/列,如果只有一個值,那麼其他2個端口/列應該是空的。

我不知道如何做到這一點,因爲我不知道如何解釋可以傳遞到表達式轉換的不同類型的字符串,因爲有時在字符串中沒有逗號,有時候有很多的逗號。任何幫助,將不勝感激

回答

4

你可以使用REG_EXTRACT函數,它提取基於正則表達式模式的字符串的部分。

假設inp_ANSWERS是表達式轉換中的輸入端口。使用以下表達式創建3個輸出端口:

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

這將在3個輸出列中放置前3個逗號分隔值。如果少於3個值,其餘列將有空白。