SQL, 将分段数不确定的字符串拆分成多列

MSSQL 数据库某表的一个字段是逗号分隔的字符串,字符串数量不定。

A_NUMBER

items

1

i1,i2,i3,i4,i5,i6

2

j1,j2,j3,j4,j5,i6,i7,i8

3

k1,k2,k3

4


5

m1

现在要把这个字段拆成 5 个新字段,名字分别是 Srllno1 至 Srllno5,值分别是将原字段拆开后的第 1 至第 4 个字符串,以及第 5 至最后一个字符串。字符串数量不足时填 null。

Srllno1

Srllno2

Srllno3

Srllno4

Srllno5

i1

i2

i3

i4

i5,i6

j1

j2

j3

j4

j5,i6,i7,i8

k1

k2

k3








m1





编写SPL代码


 A

1

=mssql.query("select items from tb”)

2

=A1.(items.split@c())

3

=A2.new(~.m(1):Srllno1, ~.m(2):Srllno2, ~.m(3):Srllno3, ~.m(4):Srllno4, ~.m(5:).concat@c():Srllno5)

A1:通过JDBC查询数据库,取items字段。

A2:将itmes字段按逗号拆成多个字符串。

A3:新建二维表,取A2当前成员的第1至第4部分,命名为新字段Srllno1 至 Srllno4;再取第 5 至最有一部分,合并后命名为新字段 Srllno5。m 函数可以灵活地按位置取成员,并自动处理数组越界。

问题来源:https://stackoverflow.com/questions/78384942/converting-nth-delimiter-in-csv-string-into-columns