[EDIT] original title of this question was "Getting the last element of a Postgres array, declaratively"

如何获取Postgres中数组的最后一个元素?

我需要声明性地执行它,因为我想将其用作按条件排序.我不想为它创建一个特殊的PGSQL函数,在这种情况下,对数据库的更改越少越好.

实际上,我想做的是按照包含多个单词的特定列的最后一个单词进行排序.这里不允许更改模型.

换句话说,我想把Ruby的sort_by {|x| x.split[-1]}推到数据库级别.我可以用Postgres string_to_arrayregexp_split_to_array函数将一个值拆分为一个单词数组,那么如何获取它的最后一个元素呢?

推荐答案

如果我正确理解了你的问题,你有一个字符串,你首先在某个分隔符上拆分它,然后找到数组的最后一个元素并丢弃其余的元素.

你可能会错过中间人,直接得到最后一个要素:

SELECT regexp_replace('foo bar baz', '^.* ', '')

结果:

baz

Postgresql相关问答推荐

优化PostgreSQL查询以将用户插入数据库

无法从Docker迁移Golang上的两个不同服务到一个数据库'

为什么在使用PostGIS时,英国郡的几何图形会出现在几内亚湾?

gitlab在ubuntu上安装duplicate schema问题

@符号在yacc中的函数中是什么意思

为什么不能超过 10 个并发连接到 Postgres RDS 数据库

从dump文件中恢复三张表遇到的问题

PostgreSQL 查询到 Excel 表

带有初始数据的 docker postgres 不会在提交中持久化

Select 日期最高的行

如何将 DELETE 的返回值插入到 postgresql 中的 INSERT 中?

PostgreSQL INSERT 插入一个枚举数组

如何在可选参数上查询 postgres?

PostgreSQL CASE 在函数中的使用

如何增加 max_locks_per_transaction

使用 RPostgreSQL 写入特定模式

使用 Postgresql 在过滤器中制作 Sqlalchemy 使用日期

使用 Postgresql 数据库(OSX Lion)创建 Rails 3.1 应用程序

PostgreSQL:如果不存在则创建表 AS

pgadmin 错误:no password supplied