从逗号分隔列中查找最后一个值

sha*_*nuo 6 amazon-redshift

我在给定列中有逗号分隔的文本.有没有办法得到最后一个,倒数第二个和第三个值?

select mnumber from mytable limit 2;

x, y, z, 1, 2, 3
a, b, c, d, e, f, g, h, 7, 8, 9
Run Code Online (Sandbox Code Playgroud)

从此列返回的值应如下所示...

col3, col2 col1
1 2 3
7 8 9
Run Code Online (Sandbox Code Playgroud)

这不起作用:

split_part(mnumber,',',-1) as last_col
Run Code Online (Sandbox Code Playgroud)

如果在split_part函数中允许减去值,它将返回我需要的内容.

sha*_*nuo 13

select reverse(split_part(reverse(message), ',', 3)) as third_last , 
reverse(split_part(reverse(message), ',', 2)) as second_last ,
reverse(split_part(reverse(message), ',', 1)) as my_last ,
message from my_table
Run Code Online (Sandbox Code Playgroud)


San*_*ane 1

这将为您提供该列的最后一个值

select SPLIT_PART(mnumber, ',', (len(mnumber)/2+1)) from mytable
Run Code Online (Sandbox Code Playgroud)

这将给出该列的倒数第三个值

select SPLIT_PART(mnumber, ',', ((len(mnumber)/2)-1)) from mytable
Run Code Online (Sandbox Code Playgroud)

这将给出该列的倒数第二个值

select SPLIT_PART(mnumber, ',', (len(mnumber)/2)) from mytable
Run Code Online (Sandbox Code Playgroud)