我意识到这是另一个有类似问题的线程:Netsuite:保存的搜索功能很像";文本到列";在Excel中但答案只拉了第一个班,没有一个子班。
如果您想将所有的类拆分为列,该怎么办?
"类";可能有很多级别Main:Sub1:Sub2:Sub3
可以有任意数量的子类。
我假设我可以创建6个(或更多(不同的列,每个列产生各自的主和子
第1列第2列第3列等。主要Sub1 Sub2等
这似乎是一个我找不到答案的普遍愿望。谢谢
您可以使用REGEXP_SUBSTR
提取相应列的字符串部分。
方法1
主要类别(第一列(
TRIM(REGEXP_SUBSTR({class}, '^[^:]+'))
子类1(第二列(
TRIM(REGEXP_SUBSTR({class}, '^[^:]+:([^:]+)',1,1,'i',1))
子类2(第三列(
TRIM(REGEXP_SUBSTR({class}, '^[^:]+:[^:]+:([^:]+)',1,1,'i',1))
在正则表达式字符串的第一个"^"之后立即使用额外的[^:]+:
组来扩展此模式,以添加额外的列。
方法2
主要类别(第一列(
TRIM(REGEXP_SUBSTR({class}, '^([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*)',1,1,'i',1))
子类1(第二列(
TRIM(REGEXP_SUBSTR({class}, '^([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*)',1,1,'i',2))
子类2(第三列(
TRIM(REGEXP_SUBSTR({class}, '^([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*):*([^:]*)',1,1,'i',3))
通过简单地更改最后一个参数的值,将其扩展到其他列,最多可以更改regex字符串中的捕获组数量——在所示的示例中,这最多可以工作6列。对于超过6列的列,您还必须向正则表达式字符串中添加额外的([^:]*):*
组。