〇、概述

1、参考

2、其他

一、随机生成数值

1、随机生成函数random_int()

-- 随机数生成函数,int版
CREATE OR REPLACE FUNCTION random_int(
start_num INT,
end_num INT
)
RETURNS INT
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE

2、随机生成函数random_bigint()

-- 随机数生成函数,bigint版
CREATE OR REPLACE FUNCTION random_bigint(
start_num BIGINT,
end_num BIGINT
)
RETURNS BIGINT
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 1

3、随机生成函数random_smallint()

-- 随机数生成函数,smallint版
CREATE OR REPLACE FUNCTION random_int(
start_num smallint,
end_num smallint
)
RETURNS smallint
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 1

可以将1、2、3同名,会根据输入参数自动匹配

二、随机生成时间

1、随机生成身份证号

https://blog.csdn.net/weixin_40001924/article/details/112894936

三、生成数组内的随机值

函数定义:

CREATE OR REPLACE FUNCTION "ap"."get_random_code"(_text)
RETURNS "pg_catalog"."varchar" AS $BODY$
DECLARE
-- start_int ALIAS FOR $1;
arr ALIAS FOR $1;
BEGIN
RETURN arr[random()*array_length(arr, 1)];
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100

函数调用:

SELECT get_random_code(ARRAY['1','22','11','3','7'])

四、生成随机XX编码

函数定义:

CREATE OR REPLACE FUNCTION "ap"."get_random_areacode"()
RETURNS "pg_catalog"."varchar" AS $BODY$
DECLARE
-- start_int ALIAS FOR $1;
arr VARCHAR[] := ARRAY(SELECT area_id FROM ap.dim_region_code) ;
BEGIN
RETURN arr[ap.get_random_number(1,array_length(arr, 1))];
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100

最新文章

  1. Spring 01基础
  2. c# 支付宝查单补单
  3. ArrayList的toArray
  4. javascript div元素后追加节点
  5. hdu 1599 find the mincost route
  6. HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题
  7. Linkedin工程师是如何优化他们的Java代码的(转)
  8. Mariadb galera 群集
  9. java中String相等问题
  10. 腾讯Web工程师的前端书单
  11. c#如何声明数据结构类型为null?
  12. Jenkins + Ansible + Gitlab之gitlab篇
  13. DeeplabV3+ 命令行不显示miou的解决
  14. Python 多线程的程序不结束多进程的程序不结束的区别
  15. java导出2007版word(docx格式)freemarker + xml 实现
  16. [leetcode]20. Valid Parentheses有效括号序列
  17. linux杂项
  18. js,javascript,删除元素,创建元素,插入子元素
  19. Android Studio安装和配置的方法 & 错误解决
  20. IOS UITableView分组列表

热门文章

  1. Mybatis框架搭建
  2. 迁移阿里云上的ECS操作说明
  3. Beats:为 Beats => Logstash => Elasticsearch 架构创建 template 及 Dashboard
  4. Elasticsearch Reindex性能提升10倍+实战
  5. MyCLI :一个支持自动补全和语法高亮的 MySQL/MariaDB 客户端
  6. 记一次批量更新整型类型的列 → 探究 UPDATE 的使用细节
  7. vue基础之MV*和它们之间的不同
  8. 如何在linux下检测(自身)IP冲突
  9. 如何实现一个SQL解析器
  10. 三、celery执行定时任务