问题描述
嗨,
我有一个列中可能包含多达6000个字符长度字符串的行。我想检查字符串的长度,然后将字符串拆分为每个长度2000的较小字符串,并将其插入第二个表中。我只想在sql中做到这一点。请帮帮忙。
例如,如果一行包含4000个长度的字符串,我将只得到2个较小的字符串2000年char并在第二个表中插入2行。
谢谢
索拉布
我有一个列中可能包含多达6000个字符长度字符串的行。我想检查字符串的长度,然后将字符串拆分为每个长度2000的较小字符串,并将其插入第二个表中。我只想在sql中做到这一点。请帮帮忙。
例如,如果一行包含4000个长度的字符串,我将只得到2个较小的字符串2000年char并在第二个表中插入2行。
谢谢
索拉布
专家解答
这是一种方法:
-用一个虚拟表交叉连接您的行,该虚拟表具有 (至少) 要将字符串拆分成的行的数量。例如,从您的示例4000/2000 = 2
-Substr字符串,从 ((N - 1) * M) 1点开始,其中
-N是虚拟表的当前行
-M是每个输出行中想要多少个字符
把它们放在一起,你会得到这样的东西:
-用一个虚拟表交叉连接您的行,该虚拟表具有 (至少) 要将字符串拆分成的行的数量。例如,从您的示例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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。