mysql function生成指定位数且不重复数字

会飞的鱼 1年前 ⋅ 606 阅读 ⋅ 0 个赞

1.生成指定位数且不重复数字

2.函数结构

CREATE DEFINER=`root`@`%` FUNCTION `fun_sn`(number BIGINT) RETURNS bigint(20)
BEGIN
	DECLARE v_flag TINYINT DEFAULT 1;
	DECLARE v_result BIGINT DEFAULT 0;
	DECLARE v_count INT(10) DEFAULT 0;
  DECLARE v_num VARCHAR(50) DEFAULT '';
  DECLARE i int DEFAULT 1;
	
	WHILE i<=number DO
		set v_num=CONCAT(v_num,'9');
		set i=i+1;
	END WHILE;
	
	REPEAT
		SELECT CAST(FLOOR(RAND() * v_num) AS SIGNED) INTO v_result;
			 SELECT COUNT(1) INTO v_count FROM s_say WHERE id = v_result;
			 IF v_count = 0 THEN
					SET v_flag=0;
			 END IF;
			 IF v_result = NULL||v_result = 0 THEN
					SET v_flag=1;
			 END IF;		
	UNTIL v_flag=0
	END REPEAT;

	RETURN v_result;
END

3.使用

SELECT fun_sn(10);

4.扩展

更换s_say表名和id字段名称即可

5.问题:

如果产生的随机数表里的id都存在就会进入死循环,所以我们尽量位数number设置大一点,不要设置两三位去跑。


全部评论: 0

    我有话说:

    SpringBoot系列19-防止重复请求,重复表单提交超级简单注解的实现之四(终极版II)

    前言: 根据最新spring boot:2.5.0版本和在《SpringBoot防止重复请求,重复表单提交超级简单的注解实现之四(终极版I)》之上化繁为简抽取更实用的代码,新增超时机制 防重复提交

    mysql循环cursor游标模板

    此模板避免了,cursor循环遍历时候出现最后一次的重复 CREATE DEFINER=`root`@`%` PROCEDURE `proce_test`() BEGIN DECLARE v_col

    kubeshere创建mysql发生FailedCreate requested: requests.cpu=500m,requests.memory=2000Mi, used: requests

    1.错误日志 create Pod mysql-master-v1-0 in StatefulSet mysql-master-v1 failed error: pods "mysql-master

    手机黑屏开了机?

             正玩这手机但是手机突然黑屏开了机了,开机键无论怎么按完全起作用。焦急的心理欲哭无泪啊!下面给大家讲述一个强制开机的方法(我的是

    mysql 批量kill多个进程

    查看进程 show PROCESSLIST; +--------+--------+---------------------+------+---------+------+- | Id     | User  ...

    SpringBoot系列15-mysql-multiple-data-sources1

    springboot 多数据源的一个简单示例 多数据源分包加载 新建数据库test1和表tbl_user CREATE TABLE `tbl_user` ( `id` int(11) NOT

    mysql GROUP BY去重报错,可以外面在套一层查询

    SELECT * FROM ( SELECT s.id, c.NAME FROM tbl_stu s, tbl_city c WHERE s.id = c.stu ) aa GROUP BY s.id, c.NAME

    thymeleaf onclick传值到function

    thymeleaf onclick传值到function 使用[[]] 例如: <span th:onclick="app.test([[${an.id}]])"/>测试click传值

    csdn博客专栏出bug了好久了,之前我申请的专栏不见了,我的专栏达人勋章也不见了,后面申请的专栏文章数量正确,热度也正确!

    csdn博客专栏出bug了好久了,之前我申请的专栏不见了,我的专栏达人勋章也不见了,后面申请的专栏文章数量正确,热度也正确!客服说工程师在修复,知道什么时候修复好啊!我之前的专栏知道还能

    docker笔记7-docker-compose搭建mysql主从复制

    1.配置docker-compose 1.1.上传主docker-compose.yml,主要配置server-id=1,read-only=0,端口号为3306 docker-compose.yml version: '3.1' service...

    我体重复胖中得到的经验

    你用多贵的口红别人一定知道,但是你胖瘦别人一眼就看得出来。 减肥成功 在去年之前我有胖过四年左右的时间,就是130以上140以下的体重,2017开始健身,喜欢跑步,就是任性跑,做拉伸。结果人还

    如果可以,我还是想去大城市生活

    我在大城市生活过,目前在小城市生活,最深的体会:小城市靠关系,大城市靠实力。生活在小城市,公平的事情远比大城市要多得多。靠关系,论父辈亲戚资源,常常能够轻松夺走普通人努力奋斗得到的大部分东西

    android(安卓)手机微信,qq,钉钉等app的、定位了怎么办?

    1.前言: 如今的应用不管是手机微信(微信小程序),qq,钉钉还是其他的应用的都会申请使用用户的位置信息,相机,电话,录音等等权限,如果授予相应权限那么app应用就无法使用 说明: 如何给手机微信

    我29岁,想给自己一个一样的未来

    我29岁,想给自己一个一样的未来 人生处处是起点,而我从29岁开始起航,人生没有太晚的开始,只要你有开始的勇气。 我未来理想的生活 1.能够成为自由撰稿人,一边工作一边照顾孩子。 2.未来买一套

    加入公众号
    加入公众号