前段时间需要数据库自动生成人名的需求,上网找了下
使用方法:调用 create_name 函数即可。
注:
姓现在只有单姓的,复姓直接往数据库中加,如果字段太短修改字段长度;
名部分是从所有汉字中随机取的,所以可能导致生成的名字有点搞笑 :-)
参考:http://www.cnblogs.com/chinaprg/archive/2006/10/08/523335.html
下面SQL脚本
使用方法:调用 create_name 函数即可。
注:
姓现在只有单姓的,复姓直接往数据库中加,如果字段太短修改字段长度;
名部分是从所有汉字中随机取的,所以可能导致生成的名字有点搞笑 :-)
参考:http://www.cnblogs.com/chinaprg/archive/2006/10/08/523335.html
下面SQL脚本
/*
author:dany
email: dany.zj.cn@gmail.com
blog:http://blog.youkuaiyun.com/dany_zj/
*/
#
# Structure for the `xb100` table :
#

DROP TABLE IF EXISTS `xb100`;

CREATE TABLE `xb100` (
`name` char(2) NOT NULL,
`q` tinyint(1) NOT NULL DEFAULT '5',
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;

#
# Data for the `xb100` table (LIMIT 0,500)
#

INSERT INTO `xb100` (`name`, `q`) VALUES
('王',1),
('李',1),
('陈',1),
('林',3),
('余',5),
('宋',3),
('贾',5),
('刘',1),
('张',1),
('胡',2),
('周',2),
('历',9),
('赵',1),
('钱',9),
('孙',2),
('郑',3),
('玉',9),
('奉',9),
('冯',3),
('褚',9),
('卫',8),
('罗',3),
('蒋',5),
('沈',4),
('韩',3),
('杨',1),
('朱',2),
('尤',9),
('许',4),
('何',3),
('吕',4),
('孔',7),
('曹',4),
('华',9),
('金',7),
('魏',5),
('姜',6),
('水',9),
('戚',9),
('谢',3),
('邹',6),
('喻',9),
('窦',9),
('章',9),
('云',9),
('苏',4),
('潘',5),
('葛',8),
('奚',9),
('范',6),
('彭',4),
('鲁',9),
('韦',9),
('昌',9),
('马',3),
('苗',9),
('凤',9),
('花',9),
('方',6),
('俞',9),
('任',6),
('袁',4),
('柳',9),
('酆',9),
('鲍',9),
('史',7),
('唐',3),
('费',9),
('廉',9),
('岑',9),
('薛',5),
('雷',9),
('贺',9),
('倪',9),
('汤',9),
('滕',9),
('殷',9),
('安',9),
('常',9),
('乐',9),
('于',3),
('时',9),
('傅',4),
('皮',9),
('齐',9),
('康',7),
('元',9),
('卜',9),
('顾',9),
('孟',9),
('平',9),
('黄',2),
('和',9),
('穆',9),
('萧',4),
('尹',9),
('姚',6),
('邵',9),
('湛',9),
('汪',6),
('祁',9),
('毛',7),
('禹',9),
('狄',9),
('米',9),
('贝',8),
('明',9),
('臧',9),
('计',9),
('伏',9),
('成',9),
('戴',5),
('谈',9),
('茅',9),
('庞',9),
('熊',7),
('纪',8),
('舒',9),
('屈',9),
('项',9),
('祝',9),
('董',4),
('梁',3),
('杜',5),
('阮',9),
('蓝',9),
('闵',9),
('席',9),
('季',9),
('麻',9),
('强',9),
('路',9),
('娄',9),
('危',9),
('江',7),
('童',9),
('颜',9),
('郭',3),
('梅',9),
('盛',9),
('刁',9),
('钟',6),
('徐',2),
('邱',7),
('骆',9),
('高',9),
('夏',6),
('蔡',5),
('田',6),
('樊',9),
('凌',9),
('霍',9),
('虞',9),
('万',8),
('支',9),
('柯',9),
('昝',9),
('管',9),
('卢',5),
('莫',9),
('房',9),
('裘',9),
('缪',9),
('干',9),
('解',9),
('应',9),
('宗',9),
('丁',5),
('宣',9),
('贲',9),
('邓',4),
('郁',9),
('单',9),
('杭',9),
('洪',9),
('包',9),
('诸',9),
('左',9),
('石',6),
('崔',7),
('吉',9),
('钮',9),
('龚',9),
('程',4),
('嵇',9),
('邢',9),
('滑',9),
('裴',9),
('陆',7),
('荣',9),
('翁',9),
('荀',9),
('羊',9),
('惠',9),
('甄',9),
('曲',9),
('家',9),
('封',9),
('芮',9),
('羿',9),
('储',9),
('靳',9),
('汲',9),
('邴',9),
('糜',9),
('松',9),
('井',9),
('段',9),
('富',9),
('巫',9),
('乌',9),
('焦',9),
('巴',9),
('弓',9),
('牧',9),
('隗',9),
('山',9),
('谷',9),
('车',9),
('侯',9),
('宓',9),
('蓬',9),
('全',9),
('郗',9),
('班',9),
('仰',9),
('秋',9),
('仲',9),
('伊',9),
('宫',9),
('宁',9),
('仇',9),
('栾',9),
('暴',9),
('甘',9),
('钭',9),
('戎',9),
('祖',9),
('武',9),
('符',9),
('景',9),
('詹',8),
('束',9),
('叶',5),
('幸',9),
('司',8),
('韶',9),
('郜',9),
('黎',9),
('蓟',9),
('溥',9),
('印',9),
('宿',9),
('白',7),
('怀',9),
('蒲',9),
('邰',9),
('从',9),
('鄂',9),
('索',9),
('咸',9),
('籍',9),
('赖',9),
('卓',9),
('蔺',9),
('屠',9),
('蒙',9),
('池',9),
('乔',9),
('阳',9),
('胥',9),
('能',9),
('苍',9),
('双',9),
('闻',9),
('莘',9),
('党',9),
('翟',9),
('谭',6),
('贡',9),
('劳',9),
('逄',9),
('姬',9),
('申',9),
('扶',9),
('堵',9),
('冉',9),
('宰',9),
('郦',9),
('雍',9),
('却',9),
('璩',9),
('桑',9),
('桂',9),
('濮',9),
('牛',9),
('寿',9),
('通',9),
('边',9),
('扈',9),
('燕',9),
('冀',9),
('浦',9),
('尚',9),
('农',9),
('温',9),
('别',9),
('庄',9),
('晏',9),
('柴',9),
('瞿',9),
('阎',5),
('充',9),
('慕',9),
('连',9),
('茹',9),
('习',9),
('宦',9),
('艾',9),
('鱼',9),
('容',9),
('向',9),
('古',9),
('易',9),
('慎',9),
('戈',9),
('廖',6),
('庾',9),
('终',9),
('暨',9),
('居',9),
('衡',9),
('步',9),
('都',9),
('耿',9),
('满',9),
('弘',9),
('匡',9),
('国',9),
('文',9),
('寇',9),
('广',9),
('禄',9),
('阙',9),
('东',9),
('欧',9),
('殳',9),
('沃',9),
('利',9),
('蔚',9),
('越',9),
('夔',9),
('隆',9),
('师',9),
('巩',9),
('厍',9),
('聂',9),
('晁',9),
('勾',9),
('敖',9),
('融',9),
('冷',9),
('訾',9),
('辛',9),
('阚',9),
('那',9),
('简',9),
('饶',9),
('空',9),
('曾',4),
('毋',9),
('沙',9),
('乜',9),
('养',9),
('鞠',9),
('须',9),
('丰',9),
('巢',9),
('关',9),
('蒯',9),
('相',9),
('查',9),
('后',9),
('荆',9),
('红',9),
('游',9),
('竺',9),
('权',9),
('逮',9),
('盍',9),
('益',9),
('桓',9),
('公',9);

COMMIT;

#
# Definition for the `get_hanzi_code` function :
#

DROP FUNCTION IF EXISTS `get_hanzi_code`;

CREATE DEFINER = 'root'@'localhost' FUNCTION `get_hanzi_code`()
RETURNS char(1) CHARSET gb2312
NOT DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN

DECLARE v_c1 INT;
DECLARE v_c2 INT;
DECLARE v_c3 INT;
DECLARE v_c4 INT;

SET v_c1 = 11+FLOOR(RAND()*3);
IF v_c1=13 THEN
SET v_c2 = FLOOR(RAND()*7);
ELSE
SET v_c2 = FLOOR(RAND()*16);
END IF;

SET v_c3 = FLOOR(10+RAND()*5);

SET v_c4 = FLOOR(RAND()*15)+1;

RETURN CHAR(((v_c1<<12)+(v_c2<<8)+(v_c3<<4)+(v_c4)) using gb2312);

END;

#
# Definition for the `create_name` function :
#

DROP FUNCTION IF EXISTS `create_name`;

CREATE DEFINER = 'root'@'localhost' FUNCTION `create_name`()
RETURNS varchar(4) CHARSET utf8
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN

DECLARE v_result CHAR(4);
DECLARE v_q INT;
DECLARE v_x CHAR(2);

set v_q = RAND()*10+1;

SELECT name INTO v_x
FROM xb100
WHERE q<=v_q
ORDER BY RAND()
limit 1;

SET v_result = CONCAT(TRIM(v_x),get_hanzi_code(),get_hanzi_code());
IF RAND()<0.7 THEN
SET v_result = CONCAT(result ,get_hanzi_code());
END IF;

RETURN v_result;
--
END;
author:dany
email: dany.zj.cn@gmail.com
blog:http://blog.youkuaiyun.com/dany_zj/
*/


























































































































































































































































































































































































































































































IF RAND()<0.7 THEN
SET v_result = CONCAT(result ,get_hanzi_code());
END IF;



