用于将字符串拆分为多个值的ESQL

问题描述:

以下输入xml字段需要子字符串为6个字符,并且每个6个字符应该分割并保存在输出的选项字段中。用于将字符串拆分为多个值的ESQL

Input: 
<feature>124414500045563879</feature> 

output: 
<option>124414</option> 
<option>500045</option> 
<option>563879</option> 

是否有IIB ESQL可以实现上述结果的任何标记生成器功能。

据我所知,没有ESQL中的String Tokenizer函数。

但是,您可以使用以下过程作为基础来实现您的目标。此方法将Delim上的S拆分为Env(Environment.Split.Array []) 中的数组,并在重新填充之前删除Environment.Split。

就你而言,你不需要Delim,你应该在Substring部分使用固定长度。

CREATE PROCEDURE Split (IN S CHARACTER, IN Env REFERENCE, IN Delim CHARACTER) 
BEGIN 
    DECLARE P INTEGER; 
    DECLARE Idx INTEGER 1; 

    SET Env.Split = NULL; 

    REPEAT 
     SET P = POSITION(Delim IN S); 
     IF P = 0 THEN 
     SET Env.Split.Array[Idx] = S; 
     ELSE 
     SET Env.Split.Array[Idx] = LEFT(S, P - 1); 
     SET S = SUBSTRING(S FROM P + LENGTH(Delim)); 
     SET Idx = Idx + 1; 
     END IF; 
    UNTIL P = 0  
    END REPEAT;  
END; 

来源:http://www.mqseries.net/phpBB2/viewtopic.php?p=97845&

+0

谢谢vincent。我会尝试上述方法。 – ranaa

+0

我遵循上面的方法并确定了输出。 – ranaa

+0

@ranaa很高兴能读到! (:如果它运作良好,你可以设置这个答案为已接受。 – VincentS

另一种解决办法是采取特征作为比特流的值,从它建立一个新的BLOB消息,以及具有使用该描述了令牌的消息定义,它重新分析那个价值。重新解析后,您可以进一步处理新的逻辑消息。