我有兴趣从 split_part 函数结果中获取最后一项。
如果 field1 有:
abc : def : ghi : jkl
abc : def : ghi : jkl : lmn
Run Code Online (Sandbox Code Playgroud)
split_part(reverse(field1), ':', 1) 不起作用,因为它返回
lkj
nml
Run Code Online (Sandbox Code Playgroud)
我希望它返回:
jkl
lmn
Run Code Online (Sandbox Code Playgroud)
我想你正在寻找这样的东西:
reverse(split_part(reverse(field1), ':', 1));
Run Code Online (Sandbox Code Playgroud)
您还可以考虑创建一个函数:
CREATE OR REPLACE FUNCTION reverse_split_part(varchar(65535), varchar(1), int)
RETURNS varchar(65535)
AS
$$
SELECT
reverse(split_part(reverse($1), $2, $3));
$$ LANGUAGE SQL IMMUTABLE;
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
admin@dev# select reverse_split_part(field1, ':', 1) from tbl;
reverse_split_part
--------------------
jkl
lmn
(2 rows)
Run Code Online (Sandbox Code Playgroud)