起名字是个比较费文字功底的差事,咱们作为一个理科生,当然要扬长避短。下面看看如果利用数据库(oracle)来做是什么效果
一、思路
首先拿一个常用汉字库,带拼音,笔画数和五行属性;另外再给每个字标记特殊属性,如古典风,琼瑶式;最后随机进行组合,从组合中高效寻找最合适的名字。
二、实现步骤
(1)建表
create table CHINESE_CHAR
(
chr VARCHAR2(10), --汉字
remark VARCHAR2(2), --标记:五行;星座,诗经……
num NUMBER, --笔画数
spell VARCHAR2(10) --拼音
);
(2)插入汉字库(略)
(3)固定第二个字为“明”,随机生成第三个字组合在一起
SELECT '苏明'||a.chr chr, '苏明'||b.chr chr,
'苏明'||c.chr chr, '苏明'||d.chr chr,
'苏明'||e.chr chr, '苏明'||f.chr chr,
'苏明'||g.chr chr, '苏明'||h.chr chr,
'苏明'||i.chr chr, '苏明'||j.chr chr
FROM (SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) a,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) b,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) c,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) d,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) e,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) f,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) g,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) h,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) i,
(SELECT chr, ROWNUM rn FROM (SELECT chr FROM chinese_char T ORDER BY dbms_random.value()) WHERE ROWNUM <= 10) j
WHERE a.rn = b.rn
AND a.rn = c.rn
AND a.rn = d.rn
AND a.rn = e.rn
AND a.rn = f.rn
AND a.rn = g.rn
AND a.rn = h.rn
AND a.rn = i.rn
AND a.rn = j.rn;
执行效果:
如果这里没有一个合适的,没关系,再执行一次,另外生成100个继续寻找,成千上万个都不是问题!
三、个性定制
如果希望随机的名字的简单好写,只要增加笔画数的条件,想要几画的就用几画;如果希望某个字属金,那么增加标记的条件,只查属性为金的;如果想要琼瑶式的,那么标记的条件就只查属性为琼瑶式的。下面简单看下琼瑶式的效果:
如果想要诗经风格的,可以把整个诗经存入库,每一句存一条记录,然后拿随机出来的名字同诗经中的字进行匹配。如果诗句足够优美顺口,则是一个不错的选择。
四、其它适用场景
除了可以用于给孩子起名,同理,一样适用于起公司名,店名,网名,物品名等等。不过个人认为最适合作家,写小说时用于人物起名,上百个人物都不是个事。
汉字库:https://download.csdn.net/download/usshe/12852056