【数据库】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
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16664056.html
                    
                
                
            
        
浙公网安备 33010602011771号