我想使用HANA数据库视图SQL拆分列,如下所示:
本质上,一列在4个值之后的字符串中的值分别为1000、100或100
例如:
ABCD1000XYZ
ABCD100XYZ
ABCD10XYZ
我需要将列拆分为
ABCD 1000 XYZ
ABCD 100 XYZ
ABCD 10 XYZ
答案 0 :(得分:1)
用于识别不同组的正则表达式如下
(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)
每个组在()内
要提取选择中的每个组,您需要使用此reg表达式4次(或3次,如下所示),然后每次选择一个组(列)
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 1)
因此Sql查询将是
SELECT SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 1) AS Col1,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 2) AS Col2,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 3) AS Col3,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 4) AS Col4
FROM some_table
由于第一列始终是字符的4,因此可以通过常规的SUBSTRING调用将其提取出来
SELECT SUBSTRING(text, 1, 4) AS Col1, ...
我希望这对您有所帮助,因为我没有访问SAP Hana的权限,因此尽管对正则表达式进行了测试,但Sql尚未经过测试。 编辑,我注意到您在第四行中有一个空格,因此我将其添加到reg表达式中。