sql - 动态增加数组的大小
问题描述
我想在 for 循环中增加数组的大小。目前我正在手动进行:
m_array varchar array default array[0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0];
我想通过检查列(select count(*) from ...
)的长度来增加它,并将这个值设置为数组的大小。或者有另一种方法可以在 PostgreSQL 中解决这个问题吗?
编辑
数组中的值应该在开始时为 0,它在另一个循环中填充,循环后数组值设置回 0。
编辑二
array_fill(0,'{28}')
为我工作。还有一种方法可以将 {28} 替换为将在声明后定义的变量。用例:我在映射函数中使用数组。每个数组元素都代表一个产品,最后array_to_string
我得到一个一维二进制代码。
编辑三
array_fill(0,array[variable])
为我工作!感谢你们!
解决方案
如果您需要0
预定义数组位置的实际值,请考虑array_fill()
.
手册:
返回一个由给定值的副本填充的数组,其维度由第二个参数指定。可选的第三个参数为每个维度提供下限值(默认为 all
1
)。
test=> SELECT array_fill(0, '{28}');
array_fill
-----------------------------------------------------------
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
(1 row)
(但我怀疑对数组的工作方式和/或何时以及如何最好地使用它们存在误解。)
推荐阅读
- java - 无法使用两种不同的机制验证签名
- spring - 为什么我在 Spring DAO 方法的 JSP 页面中出现 nullpointerexception?
- python-3.x - 如何在 GCP 中使用 pandas 和云函数读取 csv 文件?
- flutter - 使用动画容器为两个容器宽度设置动画
- python-3.x - Python 3:ModuleNotFoundError:没有命名的模块
- flutter - Flutter运行卡在白屏上
- java - 如何从 Mongo 数据源创建不可变的 Java 对象
- laravel - Gusle 运行 HTTP 请求失败
- javascript - 在 Promise 中解决 Promise
- algorithm - 使用 hashmap 作为计数器时的空间复杂度