我正在使用Informatica,我想根据字符串中的逗号拆分字符串,并将逗号之前/之后的所有内容返回到不同的端口/列。例如,我有字符串
'Answer1, Answer2, Answer3'
被传递到Expresssion Transformation,我想将每个值/答案传递到不同的端口/列。我遇到的问题是,有时传递给表达式转换的字符串只有一个值('答案1')或两个值('答案1,答案2')或许多值(&# 39; Answer1,Answer2,Answer3,Answer4,Answer5')但我需要的是前三个值(或任何3个值)要传递到不同的端口/列,如果只有一个值,那么另一个2个端口/列应该为空。
我不知道如何做到这一点,因为我不知道如何解释可以传递到表达式转换中的不同类型的字符串,因为有时候字符串中没有逗号,有时会有很多逗号。任何帮助将不胜感激
答案 0 :(得分:5)
您可以使用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个值,则其余列将具有空白。