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

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

askTom 2018-01-10
774

问题描述

嗨,
我有一个列中可能包含多达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   
   8 1234568790   
   9 1234568790   
  10 1234568790

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论