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
英文版 https://c.scudata.com/article/1732785465229