暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将一个字符串拆分为多行

askTom 2018-01-10
458

问题描述

嗨,
我有一个列中可能包含多达6000个字符长度字符串的行。我想检查字符串的长度,然后将字符串拆分为每个长度2000的较小字符串,并将其插入第二个表中。我只想在sql中做到这一点。请帮帮忙。

例如,如果一行包含4000个长度的字符串,我将只得到2个较小的字符串2000年char并在第二个表中插入2行。

谢谢
索拉布
这是一种方法:

-用一个虚拟表交叉连接您的行,该虚拟表具有 (至少) 要将字符串拆分成的行的数量。例如,从您的示例4000/2000 = 2
-Substr字符串,从 ((N - 1) * M) 1点开始,其中
-N是虚拟表的当前行
-M是每个输出行中想要多少个字符

把它们放在一起,你会得到这样的东西:

with rws as (
  select level x from dual
  connect by level <= 10
), strs as (
  select lpad('1234568790', 100, '1234568790') str from dual
  select x, substr(str, 1 + ((x-1)*10), 10) sub
  from   rws cross join strs;
X    SUB          
   1 1234568790   
   2 1234568790   
   3 1234568790   
   4 1234568790   
   5 1234568790   
   6 1234568790   
   7 1234568790