在 SAP HANA 中拆分分隔字符串
Split delimited string in SAP HANA
我正在使用 HANA 1.0 SPS12。有没有办法在 SAP HANA 中拆分定界字符串。
我将管道分隔的字符串作为 -
v_input = '1111|2222|3333|4444'
我需要根据分隔部分的位置输出 -
select seperate_string(v_input,pos) from dummy;
例如
select seperate_string('1111|2222|3333|4444',1 ) from dummy; --1111
select seperate_string('1111|2222|3333|4444',2 ) from dummy; --2222
select seperate_string('1111|2222|3333|4444',3 ) from dummy; --3333
是否可以用 SUBSTR_REGEXP 来做到这一点?
我尝试了下面的编码,但没有成功 -
select SUBSTR_REGEXPR('[^\|]+' IN '1111|2222|3333|4444' GROUP 1 ) from dummy;
是的,SUBSTR_REGEXPR()
可以实现。
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 1 ) from dummy;
-- 1111
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 2 ) from dummy;
-- 2222
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 3 ) from dummy;
-- 3333
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 4 ) from dummy;
-- 4444
正则表达式在 |
之前和字符串末尾的字符上构建四个 match-groups。 SUBSTR_REGEXPR()
函数中的 GROUP x
参数指定应返回哪个 match-group。
是的,您可以尝试以下 SUBSTRING_REGEXPR()
SELECT SUBSTRING_REGEXPR('[^|]+' IN '1111|2222|3333|44|555' FROM 1 OCCURRENCE 4) from dummy;
--44
SELECT SUBSTRING_REGEXPR('[^|]+' IN '1111|2222|3333|44|555' FROM 1 OCCURRENCE 2) from dummy;
--2222
我正在使用 HANA 1.0 SPS12。有没有办法在 SAP HANA 中拆分定界字符串。
我将管道分隔的字符串作为 -
v_input = '1111|2222|3333|4444'
我需要根据分隔部分的位置输出 -
select seperate_string(v_input,pos) from dummy;
例如
select seperate_string('1111|2222|3333|4444',1 ) from dummy; --1111
select seperate_string('1111|2222|3333|4444',2 ) from dummy; --2222
select seperate_string('1111|2222|3333|4444',3 ) from dummy; --3333
是否可以用 SUBSTR_REGEXP 来做到这一点?
我尝试了下面的编码,但没有成功 -
select SUBSTR_REGEXPR('[^\|]+' IN '1111|2222|3333|4444' GROUP 1 ) from dummy;
是的,SUBSTR_REGEXPR()
可以实现。
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 1 ) from dummy;
-- 1111
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 2 ) from dummy;
-- 2222
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 3 ) from dummy;
-- 3333
select SUBSTR_REGEXPR('(.+)\|(.+)\|(.+)\|(.+)' IN '1111|2222|3333|4444' GROUP 4 ) from dummy;
-- 4444
正则表达式在 |
之前和字符串末尾的字符上构建四个 match-groups。 SUBSTR_REGEXPR()
函数中的 GROUP x
参数指定应返回哪个 match-group。
是的,您可以尝试以下 SUBSTRING_REGEXPR()
SELECT SUBSTRING_REGEXPR('[^|]+' IN '1111|2222|3333|44|555' FROM 1 OCCURRENCE 4) from dummy;
--44
SELECT SUBSTRING_REGEXPR('[^|]+' IN '1111|2222|3333|44|555' FROM 1 OCCURRENCE 2) from dummy;
--2222