PostgreSQL 支持内置的数组类型,包括多维数组。不仅如此,PostgreSQL 还提供了许多操作和处理数组类型的函数。
PostgreSQL 16 又增加了 2 个新的数组函数:
- array_sample(),返回随机抽取的 N 个数组元素;
- array_shuffle(),将数组中的元素随机排序。
接下来我们看几个示例。
数组随机抽样
以下示例每次返回 1 到 10 之间的一个随机数字:
SELECT array_sample(ARRAY[1,2,3,4,5,6,7,8,9,10], 1);
array_sample|
------------+
{2} |
array_sample() 函数包含两个参数,第一个参数是一个数组,第二个参数是抽样结果的个数。该函数的返回类型仍然是数组。
以下示例每次返回 3 个随机数字:
SELECT array_sample(ARRAY[1,2,3,4,5,6,7,8,9,10], 3);
array_sample|
------------+
{9,1,3} |
对于多维数组,抽样操作基于第一个维度返回元素。例如:
SELECT array_sample(ARRAY[[1,2],[3,4],[5,6],[7,8],[9,10]], 3);
array_sample |
--------------------+
{{3,4},{1,2},{9,10}}|
array_sample() 函数的第二个参数不能大于数组的第一个维度的长度,否则将会返回错误。例如:
SELECT array_sample(ARRAY[[1,2],[3,4],[5,6],[7,8],[9,10]], 6);
SQL 错误 [22023]: 错误: sample size must be between 0 and 5
数组随机排序
array_shuffle() 函数可以基于数组的第一个维度将元素进行随机排序(洗牌)。例如:文章来源:https://www.toymoban.com/news/detail-493572.html
SELECT array_shuffle(ARRAY['a','b','c','d','e','f']);
array_shuffle|
-------------+
{f,c,e,b,a,d}|
SELECT array_shuffle(ARRAY[['a','b'],['c','d'],['e','f']]);
array_shuffle |
-------------------+
{{c,d},{a,b},{e,f}}|
除了第一个维度之外,其他维度上的元素顺序仍然保存不变。文章来源地址https://www.toymoban.com/news/detail-493572.html
到了这里,关于PostgreSQL 16新特性之数组抽样和随机排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!