2016-10-25 30 views
0

私はInformaticaを使用しています。文字列のコンマに基づいて文字列を分割し、コンマの前後のすべてを異なるポート/列に戻したいとします。例えば、私はInformatica PowerCenter Designerで文字列を分割する

'Answer1, Answer2, Answer3' 

がExpresssion変換に渡される文字列を持っており、それぞれの値/答えは異なるポート/カラム中に通過させるために私がしたいと思います。私が持っている問題は、式変換に渡される文字列が、たった1つの値( 'Answer1')または2つの値( 'Answer1、Answer2')または多くの値( 'Answer1、Answer2、Answer3、Answer4、Answer5')しかし、私が必要とするのは、最初の3つの値(または任意の3つの値)を異なるポート/列に渡すことです。値が1つだけの場合は、他の2つのポート/列をnullにする必要があります。

私は表現変換に渡すことのできるさまざまな種類の文字列をどのように説明するかわからないので、これを行う方法はわかりません。文字列にカンマがないことがあります。カンマのどんな助けもありがとう

答えて

4

正規表現パターンに基づいて文字列の一部を抽出するREG_EXTRACT関数を使用して行うことができます。

たとえば、inp_ANSWERSが式変換の入力ポートであるとします。これは、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つの出力ポートを作成します。値が3未満の場合、残りの列には空白が入ります。