用于为测试库生成随机的姓名。

生成的姓名基本能看,且一般能一眼看出不是正常的姓名,主要用于在系统测试时灌入测试数据,或用于覆盖现场正式数据为测试数据。

可以避免发生张飞、赵云、李世民在你的系统里出现的情况。

CREATE OR REPLACE FUNCTION get_random_name(_iSex SMALLINT DEFAULT -1)
RETURNS VARCHAR
AS $BODY$/*姓的随机范围,全国人数最多的前100个姓*/DECLARE rand_surName VARCHAR;/*名的随机范围*/DECLARE rand_girlName VARCHAR;DECLARE rand_boyName VARCHAR;/*随机生成姓名的长度,2到4个字*/DECLARE name_len INT;/* 准备返回的姓名 */DECLARE _ResultName VARCHAR;
BEGIN-- 功能:用于为测试库生成随机的姓名。生成的姓名基本能看,且一般能一眼看出不是正常的姓名,主要用于在系统测试时灌入测试数--      据,或用于覆盖现场正式数据为测试数据-- PS:rand_surName和rand_girlName、rand_boyName可根据情况自行调整--     本存储过程依赖我的另一个函数random_int(_begin_number int, _end_number int),或自行调整为随机数生成的写法。-- 调用Demo:SELECT get_random_name();-- 参数:--      _iSex,性别,-1=随机生成;1=男,2=女,可根据该值生成侧重于男性的姓名或女性的姓名-- 本存储过程在PgSQL 14.1 中调试通过-- 如果不传性别,则随机生成IF _iSex = -1 THEN_iSex = random_int(1, 2);END IF;-- 输出性别RAISE NOTICE '性别=[%]', _iSex;-- 姓的随机范围rand_surName := '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦许何吕张孔曹严华金魏陶姜谢邹章云苏潘葛范彭马方袁柳史唐薛汤殷罗';-- 姓的随机范围(之前是百家姓,现调整为全国人数量多的前100个姓)rand_surName := '李王张刘陈杨赵黄周吴徐孙胡朱高林何郭马罗梁宋郑谢韩唐冯于董萧程曹袁邓许傅沈曾彭吕苏卢蒋蔡贾丁魏薛叶阎余潘杜戴夏钟汪田任姜范方石姚谭廖邹熊金陆郝孔白崔康毛邱秦江史顾侯邵孟龙万段漕钱汤尹黎易常武乔贺赖龚文';-- 名的随机范围rand_girlName := '秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽';rand_boyName := '伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘';-- PgSQL中,length(rand_surName)=字符数 ,中文字符占用1个长度-- 输出调试信息-- RAISE NOTICE 'rand_surName.length=[%]', length(rand_surName);-- RAISE NOTICE 'test name1=[%]', substr(rand_surName, 100, 1);-- 超出范围取不到字,但不报错-- RAISE NOTICE 'test name2=[%]', substr(rand_surName, 101, 1);-- RAISE NOTICE 'test name3=[%]', substr(rand_surName, 102, 1);-- 随机生成姓名的字数,2到4个字name_len := random_int(2, 4);-- 姓 begin_ResultName = substr(rand_surName, my_random_num(1, length(rand_surName)), 1);-- 若返回姓名是3个字或4个字的情况,需要给姓再加一个字,暂不考虑复姓IF (name_len = 3) OR (name_len = 4) THEN_ResultName = concat(_ResultName, substr(rand_surName, my_random_num(1, length(rand_surName)), 1));END IF;-- 姓 end-- 名 begin-- 男生IF _iSex = 1 THEN_ResultName = concat(_ResultName, substr(rand_boyName, my_random_num(1, length(rand_boyName)), 1));ELSE -- 女生_ResultName = concat(_ResultName, substr(rand_girlName, my_random_num(1, length(rand_girlName)), 1));END IF;-- 返回姓名字数为4的,名需要再加一个字IF name_len = 4 THEN-- 男生IF _iSex=1 THEN_ResultName = concat(_ResultName, substr(rand_boyName, my_random_num(1, length(rand_boyName)), 1));ELSE -- 女生_ResultName = concat(_ResultName, substr(rand_girlName, my_random_num(1, length(rand_girlName)), 1));END IF;END IF;-- 名 endRETURN _ResultName;END;
$BODY$LANGUAGE plpgsql VOLATILE

PostgreSQL/pgsql生成随机的姓名的函数相关推荐

  1. php 随机字符串函数,PHP 生成随机字符串的方法函数

    这篇文章主要介绍了PHP 生成随机字符串的方法函数 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下/** * 生成随机字符串,可用来自动生成密码 默认长度6位 字母和数字混合 * @p ...

  2. php mysql 随机字符串函数是_PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件...

    PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件/** * 生成随机字符串,可用来自动生成密码 默认长度6位 字母和数字混合 * @param string $len 长度 * @p ...

  3. 使用python生成随机中奖姓名和电话号码并存入excel

    这两天公司做了一个抽奖活动,需要将一些excel的文档转换成带有*号的形式发表到公众号上,由于每天都有固定的数据量,随即想到用python脚本实现生成随机姓名和电话,以及中奖信息. 首先引入需要用到的 ...

  4. 【Python】Python生成随机的姓名

    注:random.choice(seq)返回一个列表,元组或字符串的随机项. seq可以是一个列表,元组或字符串. import randomdef random_name():# 删减部分,比较大众 ...

  5. python 中文名_python生成随机中文姓名和拼音

    def sayhello(): print('hellopython') import pinyin import random def random_name(): # 删减部分,比较大众化姓氏 f ...

  6. java 日期随机数_Java 生成指定时间范围的随机时间、随机中文姓名、随机字符姓名、随机数...

    解决问题: Java生成指定时间范围的随机时间? Java生成随机中文姓名? Java生成随机字符姓名? Java生成随机数? 代码: import java.io.UnsupportedEncodi ...

  7. python输出姓名_Python生成随机不重复姓名昵称

    姓采用百家姓,名字从常用名字高频字选取两个汉字,再和当前时间戳组合,估计应该是不会重复了,代码如下: # -*- coding:utf-8 -*- import random import time ...

  8. Java 生成随机中文、英文姓名(下)

    基本介绍 一个生成随机中英文姓名的 java 小项目,已打包jar(未混淆). 这个 jar 使用 json 的方式存取姓名资源,json 文件放在jar包之中. 项目依赖于Json-Java解析js ...

  9. 如何在C中生成随机int?

    是否有在C中生成随机int数的函数? 或者我必须使用第三方库吗? #1楼 让我们来看看. 首先,我们使用srand()函数为随机化器播种. 基本上,计算机可以根据提供给srand()的数字生成随机数. ...

  10. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区

    postgresql 时区与时间函数 rudygao 2016-02-03 1951浏览量 简介: --把时间戳转成epoch值 postgres=# select extract(epoch fro ...

最新文章

  1. ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
  2. tf.keras.layers.Flatten() 示例
  3. 实现费用管理 mysql_电信资费管理系统的设计与实现(NetBeans,MySQL)
  4. 【Heritrix基础教程之2】Heritrix基本内容介绍
  5. 云平台需要开发的底层功能
  6. python写软件测试用例_Python单元测试框架unittest:单个测试用例编写步骤及实例...
  7. ajax获取jsp对象,如何用Ajax传递一个对象集合到jsp页面。
  8. 组合学讲义 李乔(2ed)-习题1.1-6组合恒等式题解
  9. 最近项目参考的文章们
  10. Java:接口interface
  11. java word_java输出word解决方案
  12. oracle合并列的函数wm_concat
  13. 插图详解Python解决汉诺塔问题
  14. 批处理创建桌面快捷方式
  15. python OpenCV 颜色通道问题 子图颜色异常问题
  16. ROS学习之error解决记录
  17. Android视图绑定,设置控件点击事件不生效
  18. LinearLayout布局添加下划线
  19. 巴比特 | 元宇宙每日必读:盘点2022年全球元宇宙行业十大“闪光时刻”,2023年,元宇宙的发展机会又在哪里?...
  20. 《趣谈网络协议》学习笔记 DAY08

热门文章

  1. 《UnityAPI.Rect矩阵》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Rect+Contains+Overlaps+ToString+立钻哥哥++OK++)
  2. iOS 开发者证书打包项目未包含最新的UDID
  3. UltraCompare for Mac(文件内容对比神器)v22
  4. VS2010实战:创建并共享项目/项模板
  5. 不用社保也可以办理深圳居住证(全程网上办理) 解决提交后一直暂存状态
  6. 语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、路径覆盖
  7. 如何设置无线路由器?
  8. 直播预告|年营业额百亿的企业都在如何做数字化转型
  9. 快速开发项目的前端框架主要针对后台界面
  10. 常数1的傅里叶变换详解过程