用于 CONDENSE 和 SPLIT 的 HANA 程序
HANA procedure for CONDENSE and SPLIT
我正在尝试将字符串压缩并拆分为单行,例如
A B C
进入
A
B
C
到目前为止,下面的过程对 CALL Z_SPLITROW('A B C') 工作正常,但如果我在字符之间有更多的空格,则不行。有什么想法吗?
CREATE PROCEDURE Z_SPLITROW(TEXT nvarchar(100))
AS
BEGIN
declare _items nvarchar(100) ARRAY;
declare _text nvarchar(100);
declare _index integer;
_text := :TEXT;
_index := 1;
WHILE LOCATE(:_text,' ') > 0 DO
_items[:_index] := SUBSTR_BEFORE(:_text,' ');
_text := SUBSTR_AFTER(:_text,' ');
_index := :_index + 1;
END WHILE;
_items[:_index] := :_text;
rst = UNNEST(:_items) AS ("items");
SELECT * FROM :rst;
END;
要过滤掉数量灵活的空白字符,您可以使用 REPLACE_REGEXPR:
select 'A B C' as orig,
replace_regexpr ( '[[:space:]]+'
IN 'A B C'
WITH ' ') as repl
from dummy;
ORIG | REPL
---------+-------
A B C| A B C
我正在尝试将字符串压缩并拆分为单行,例如
A B C
进入
A
B
C
到目前为止,下面的过程对 CALL Z_SPLITROW('A B C') 工作正常,但如果我在字符之间有更多的空格,则不行。有什么想法吗?
CREATE PROCEDURE Z_SPLITROW(TEXT nvarchar(100))
AS
BEGIN
declare _items nvarchar(100) ARRAY;
declare _text nvarchar(100);
declare _index integer;
_text := :TEXT;
_index := 1;
WHILE LOCATE(:_text,' ') > 0 DO
_items[:_index] := SUBSTR_BEFORE(:_text,' ');
_text := SUBSTR_AFTER(:_text,' ');
_index := :_index + 1;
END WHILE;
_items[:_index] := :_text;
rst = UNNEST(:_items) AS ("items");
SELECT * FROM :rst;
END;
要过滤掉数量灵活的空白字符,您可以使用 REPLACE_REGEXPR:
select 'A B C' as orig,
replace_regexpr ( '[[:space:]]+'
IN 'A B C'
WITH ' ') as repl
from dummy;
ORIG | REPL
---------+-------
A B C| A B C