[英]Redshift :- Easy to split comma separated string into rows
Clean/Best way to split a comma-separated list of string into rows.将逗号分隔的字符串列表拆分为行的干净/最佳方法。 Dynamic delimiter动态分隔符
Here it is, Enjoy!!在这里,享受!
CREATE OR REPLACE PROCEDURE public.sp_string_split( "string" VARCHAR(MAX), "delimiter" char)
AS $$
DECLARE
delimeter char := ',';
cnt INTEGER := 1;
no_of_parts INTEGER := 0;
sql VARCHAR(MAX) := '';
item character varying := '';
BEGIN
IF LEN("delimiter") != 0 THEN
delimeter = "delimiter" ;
END IF;
--RAISE NOTICE 'using %', delimeter ;
no_of_parts = (SELECT LENGTH(string) - LENGTH(REPLACE(string, delimeter,'')));
--RAISE NOTICE 'parts length sql %', no_of_parts ;
-- drop table
sql := 'DROP TABLE IF EXISTS split_table;';
--RAISE NOTICE 'executing sql %', sql ;
EXECUTE sql;
-- Create table
sql := 'CREATE TEMPORARY TABLE IF NOT EXISTS split_table (part VARCHAR(255));';
--RAISE NOTICE 'executing sql %', sql ;
EXECUTE sql;
<<simple_loop_exit_continue>>
LOOP
item = (select split_part("string",delimeter,cnt));
--RAISE NOTICE 'item %', item ;
sql := 'INSERT INTO split_table SELECT '''||item||''' ;';
EXECUTE sql;
cnt = cnt + 1;
EXIT simple_loop_exit_continue WHEN (cnt >= no_of_parts + 2);
END LOOP;
END ;
$$ LANGUAGE plpgsql;
Usage Example:-用法示例:-
-- Example 1
call public.sp_string_split('john,smith,jones', ',');
select *
from split_table
-- Example 2
call public.sp_string_split('john|smith|jones', '|');
select *
from split_table
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.