我有一个正则表达式来解析表中的一些原始数据,比如: ',?([\w]*|\d*)'
.
select regexp_extract(raw_line,',?([\w]*|\d*){1}',1) as field1
, regexp_extract(raw_line,',?([\w]*|\d*){2}',1) as field2
, ...
, regexp_extract(raw_line,',?([\w]*|\d*){n}',1) as fieldn
from table
这将创建组来解析csv字段。问题是要解析的表和每一行都很长,因此这是一个昂贵的操作。
我想知道我是否可以使用正则表达式(没有组) {n}
把它分成一个数组。然后我可以使用数组索引来获取每个字段。比如:
select arr_raw[0] as field1,
...,
arr_raw[n] as fieldn
from (
split(
select regexp_extract(raw_line, ',?([\w]*|\d*)'
, ) as arr_raw -- ??
)t
我知道表中有多少个组,但不确定这是否可行,或者正确的语法/方法应该是什么。
谢谢。
1条答案
按热度按时间ne5o7dgx1#