【发布时间】:2019-09-23 05:20:29
【问题描述】:
我有一个带有列的表格:
- f_name - Varchar
- f_content - CLOB
表1
f_name f_content
test1.txt YL*1**50*1~
RX*1~
LR*2~
test2.txt YL*1**49*1~
EE*1~
WW*2~
f_content 超过 4000 个字符,有时超过 10000 个字符。
是否可以创建 3 个 Varchar2 列并在每列中拆分最多 4000 个字符,直到最近的 ~ 覆盖整个 CLOB?
输出将是:
f_name f_content f_content_varchar1 f_content_varchar2 f_content_varchar3
test1.txt YL*1**50*1~ YL*1**50*1~ RX*1~ LR*2~
RX*1~
LR*2~
test2.txt YL*1**49*1~ YL*1**49*1~ EE*1~ WW*2~
EE*1~
WW*2~
请注意 - 我想把它分成 3 列,但只到最后一个 ~,所以例如,如果一行在字符 4003 上结束 ~,那么它不应该将最后一行添加到 varchar 列并始终考虑前一行以~结尾。
一个例子是:
YL*1**50*1~
RX*1~
LR*2~
假设 4000 个字符以
结尾"YL*1**50*1~
RX*1~
LR"
那么在varchar column1中,它应该存储:
"YL*1**50*1~
RX*1~"
并且在 varchar column2 中,它应该存储:
"LR*2~"
【问题讨论】:
-
您可以使用 SUBSTRING() 方法将 f_content 中的值拆分为其他 3 列。首先从 0 拆分到 4000,然后从 4001 拆分到 8000,最后从 8001 拆分到 12000。
-
我想要直到最后一个 ~ 直到 4000 并且没有额外的字符,即使它是 3945 个字符。从 3946 到 ~ 7946。
-
如果4000个字符之间有2个~怎么办?
-
我的意思是直到最后一个〜。一个clob中会有很多〜。我只想到4000。
-
我添加了一个例子。不确定这是否有意义。