【发布时间】:2019-08-05 02:48:44
【问题描述】:
我在 Oracle SQL 的表格中的一个单元格中有一个文本:
ISA*00*AUTHORIZAT*00*SECURITY I*ZZ*000000060000000*ZZ*000000010000000*110705*1132*^*00501*110705001*0*T*:~
GS*HC*00000006*00000001*20110705*113253*110705001*X*005010X222A1~
ST*837*0021*005010X222~
BHT*0019*00*244579*20061015*1023*CH~
NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~
PER*IC*JERRY*TE*3055552222*EX*231~
NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~
HL*1**20*1~
PRV*BI*PXC*203BF0100Y~
NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~
N3*234 SEAWAY ST~
N4*MIAMI*FL*33111~
请注意,以上内容位于 1 个单元格中。我需要将其分解为多行并在其上分配一个循环。
表格如下所示:
loop message
000 ISA*00*AUTHORIZAT*00*SECURITY I*ZZ*000000060000000*ZZ*000000010000000*110705*1132*^*00501*110705001*0*T*:~
000 GS*HC*00000006*00000001*20110705*113253*110705001*X*005010X222A1~
000 ST*837*0021*005010X222~
000 BHT*0019*00*244579*20061015*1023*CH~
1000A NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~
1000A PER*IC*JERRY*TE*3055552222*EX*231~
1000B NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~
2000A HL*1**20*1~
2010AA PRV*BI*PXC*203BF0100Y~
2010AA NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~
2010AA N3*234 SEAWAY ST~
2010AA N4*MIAMI*FL*33111~
所以,基本上,我需要根据新行拆分字符串,然后根据序列分配适当的循环。规则是:
- 第一个 NM1 应该是 1000A 并继续分配到下一个 NM1
- 下一个 NM1 应该是 1000B 并继续分配直到下一个 PRV
- 下一个 PRV 应该是 2010AA 并继续分配到下一个 NM1
我能够使用正则表达式成功地将文本分成多行,但无法根据条件分配值。
有没有办法在 Oracle SQL 中编写代码?
【问题讨论】: