Denodo 中的拆分功能不起作用! (第二种方式)Denodo 中复杂字符串的正则表达式

Split function in Denodo does not work! (second way) Regex for complex string in Denodo

我主要是尝试在 Denodo 中拆分以下字符串,并尝试在数据库中为每个值创建新列。

my_string = ABLMNC_154342_O_UW_UA-UCOU_SMC

我面临的问题是当我拆分字符串时,Denodo 创建了一个数组。但在那之后就无法使用索引访问特定元素。例如,

split('_',my_string) 给出

op_array[] = [ABLMNC,154342,O,UW,UA-UCOU,SMC]

但我无法以 op_array[0] 的形式访问 op_array 元素。我在 Denodo 中提出了这个问题,但没有帮助。

所以,作为一种解决方法,我已经开始使用正则表达式。现在我能够得到第一个字符串和数字。

my_string = ABLMNC_154342_O_UW_UA-UCOU_SMC

regex(my_string,'_[0-9]*_[A-Z]+_[A-Z]+_[A-Z]+-[A-Z]+_[A-Z]+','') = ABLMNC

regexp(my_string,'[A-Z_-]+',' ') = 154342

但是我找不到字符串的其他部分。 如果有人可以在任何这些情况下提供帮助,我将不胜感激。

要获取数组中的值,请使用 (name of the field)[position of the array].<name of the field in the register>

例如:

SELECT (field1_array)[0].string AS f1, (field1_array)[1].string AS f2, 
       (field1_array)[2].string as f3, (field1_array)[3].string AS f4, 
       (field1_array)[4].string AS f5, (field1_array)[5].string as f6

FROM (

  SELECT split('_', field1) AS field1_array FROM (

    -- Subquery with that projects the value you mention. This would usually come from a regular view
    SELECT 'ABLMNC_154342_O_UW_UA-UCOU_SMC' AS field1 FROM dual()
  )
);

此查询 returns 6 列的值: ABLMNC, 154342, O, UW, UA-UCOU, SMC

当然,只有当数组中的字段数始终相同时,此解决方案才有效。