将PostgreSQL中数字中的所有奇数位相加

时间:2017-07-02 22:54:17

标签: postgresql postgresql-9.1 postgresql-9.3

PostgreSQL中是否有内置函数来汇总从右侧开始的交替数字?

chrome.tabs.create({"url":"https://mycsuf.fullerton.edu"});

基本上我想打印每个替代号码并按上述方式总结,请为Postgres中的任何解决方案提供建议

1 个答案:

答案 0 :(得分:3)

在Postres 9.4中,您可以使用string_to_array()unnest() with ordinality使用字符串轻松完成此操作:

select ord % 2, sum(val::numeric)
from (select reverse('890400021003'::text) as x) x, lateral
     unnest(string_to_array(x, NULL)) with ordinality u(val, ord)
group by ord % 2;

在9.3中,您可以使用横向连接来完成此操作:

select i % 2, sum(substring(x.x, g.i, 1)::numeric)
from (select reverse('890400021003'::text) as x) x, lateral
     generate_series(1, length(x.x)) g(i)
group by i % 2;

您可以在早期版本中使用子查询来应用相同的想法。