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

ran*_*naa 2 messagebroker ibm-integration-bus extended-sql

以下输入xml字段需要包含6个字符,每6个字符应分割并保存在输出的选项字段中.

Input: 
<feature>124414500045563879</feature>

output:
<option>124414</option>
<option>500045</option>
<option>563879</option>
Run Code Online (Sandbox Code Playgroud)

IIB ESQL中是否有任何tokenizer功能可用于实现上述结果.

Vin*_*ntS 5

据我所知,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;
Run Code Online (Sandbox Code Playgroud)

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