【数据库】SQL-随机生成区间内数值、日期、字符串,mock数据

〇、概述

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

 

posted @   哥们要飞  阅读(871)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2021-09-07 【算法题型总结】--6、链表
点击右上角即可分享
微信分享提示