下面来自Oracle的代码的Postgres等价物是什么?
Select instr('abc de fgh',' ', -1) from dual;返回:7
原码:substr(country, instr(country,' ', -1)+1);
我想在Postgres中创建相同的逻辑,但位置和反转函数不起作用
发布于 2021-11-11 10:21:26
显然,您想要字符串中的最后一个元素,其中的元素由空格字符分隔。
如果您使用的是Postgres 14,则可以使用:
split_part('abc de fgh', ' ', -1);它返回fgh
或者使用列引用:split_part(country, ' ', -1)
在早期版本中,split_part()不允许负偏移量,因此您需要一些不同的东西:
(string_to_array('abc de fgh', ' '))[cardinality(string_to_array('abc de fgh', ' '))] 使用列引用会稍微短一点:
(string_to_array(country, ' '))[cardinality(string_to_array(country, ' '))] 这首先将字符串转换为数组,然后选择数组的最后一个元素(该元素是使用返回数组长度的cardinality()函数确定的)
https://stackoverflow.com/questions/69926548
复制相似问题