我想将一行中的多个值拆分为单独的行sap hanasql。
桌子 :
id name
1 kabil,arasan
但我想要这样的输出:
id name
1 kabil
1 arasan
- 尽量避免列中出现类似 csv 的数据,例如在 ETL 过程中标准化
- 您可以使用一个过程,请参阅[HANA:分割字符串? https://stackoverflow.com/questions/27709088/hana-split-string%5D%5B1%5D
-
如果没有过程,您可以使用以下 SQL(限制:它假定 csv 字段中的值的最大数量)。我只会将它用于临时目的。
CREATE COLUMN TABLE "TEST_SPLIT"(
"SOME_KEY" VARCHAR(10),
"CSV_STR" VARCHAR(1000) );
INSERT INTO "TEST_SPLIT" ("SOME_KEY", "CSV_STR") VALUES ('1', 'hello world');
INSERT INTO "TEST_SPLIT" ("SOME_KEY", "CSV_STR") VALUES ('2', 'one,two,three');
INSERT INTO "TEST_SPLIT" ("SOME_KEY", "CSV_STR") VALUES ('3', NULL);
Select * from
( select "SOME_KEY" "KEY", "ELEMENT_NUMBER" "ORD",
SUBSTR_REGEXPR('(?<=^|,)([^,]*)(?=,|$)' IN "TEST_SPLIT"."CSV_STR" OCCURRENCE "SERIES"."ELEMENT_NUMBER" GROUP 1) "VAL"
from "TEST_SPLIT",
SERIES_GENERATE_INTEGER(1, 1, 10 ) "SERIES" -- replace 10 with your max. number of values in CSV-Field
)
where "VAL" is not null
order by "KEY", "ORD"
[1]: HANA:分割字符串? https://stackoverflow.com/questions/27709088/hana-split-string
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)