微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组 – 在PostgreSQL中将位字符串转换为数组

我有一个160个字符串的字符串,我需要一个整数数组来存储值为1的位的位置.

例:

bitstring = '00110101'
array = [3,4,6,8]

是否可以仅使用sql执行此操作,还是需要定义PL / sql函数或类似的东西?

解决方法

确实可以用sql编写它.这是一个起点:

select array(
  select substring(str from i for 1) as bit
  from generate_series(1,length(str)) as i
  where bit = '1'
);

不过,您可能希望将其包装在pl / sql函数中,以避免在整个地方重复代码.

工作功能

create or replace function get_bit_positions(varbit) returns bit[] as $$
select array(
  select substring($1 from i for 1) as bit
  from generate_series(1,length($1)) as i
  where substring($1 from i for 1) = '1'
);
$$language sql immutable;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐