Sql生成不重复的数字

-- =============================================
-- Author:TUZI
-- Create date: 2016.4.18
-- Description:生成活动邀约码(活动编码+Code是唯一)

/*
 exec sp_generateInvitecode
 @CampaignCode=‘test‘ ,@Length=10,@Quantity=100000

*/

-- =============================================
ALTER PROCEDURE sp_generateInvitecode(@CampaignCode nvarchar(50)
                                      ,--所属活动编码
                                       @Length int
                                      ,--Code的长度
                                       @Quantity int--Code的数量
)
AS
BEGIN
    CREATE TABLE #t(Code nvarchar(50));
    CREATE UNIQUE INDEX idx_union_code ON #t(Code)

    DECLARE @batchNum nvarchar(50);
    SET @batchNum = REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(nvarchar(19),GETDATE(),121),‘ ‘,‘‘),‘-‘,‘‘),‘:‘,‘‘),‘.‘,‘‘)
    --如果活动进行中,需要继续生成邀请码,就得排除已经存在于表中的码

    SELECT Code INTO #existsCode
      FROM  XXX
      WHERE CampaignCode = @CampaignCode

    DECLARE @runQ int = 0;
    WHILE @runQ < @Quantity
        BEGIN
            INSERT INTO #t
            SELECT TOP 10000 LEFT(CAST(LEFT(‘10000000000‘,@Length)AS bigint) + ABS(CHECKSUM(NEWID())),@Length)
              FROM syscolumns c1,syscolumns c2;

            DELETE #t
            WHERE Code IN(SELECT Code
                            FROM #existsCode);
            SELECT @runQ = COUNT(DISTINCT Code)
              FROM #t;
        END

    INSERT INTO  XXX(CampaignCode
                            ,Code
                            ,BatchNum
                            ,createTime)
    SELECT TOP (@Quantity)@CampaignCode
                         ,Code
                         ,@batchNum
                         ,GETDATE()
      FROM #t
    DROP TABLE #t;
END
GO

  

时间: 2024-10-28 14:22:26

Sql生成不重复的数字的相关文章

SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示

原文:SQL Server 2008 R2--使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示 =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱([email protected])”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http:

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成"去重"与"排序"的工作. Input Param n               输入随机数的个数 inputArray      n个随机整数组成的数组 Return Value

导入random模块, 生成0-100间所有数字的随机列表(列表中的数字不重复)

导入random模块, 生成0-100间所有数字的随机列表(列表中的数字不重复)思路:先导入随机数生成模块,通过循环生成随机数,判断生成随机数是否有相同的,把不同的写入列表 方法一:方法二: 欢迎各路大神指正 原文地址:http://blog.51cto.com/10412806/2088010

生成不重复的随机数(待完善)

1 // 方法一,用for循环,break跳出语句(不推荐,方法太笨,思路也不是很明确) 2 3 public static void main(String[] args) { 4 5 // 方法二 利用foreach和continue循环并跳出循环 6 7 int[] c = new int[7];// 创建7个数的数列,这个地方可以不用定义数组 8 9 Random ran1 = new Random(); // 实例化对象 10 11 boolean bo = false; // 定义标

sql里将重复行数据合并为一行,数据用逗号分隔

DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @T1 (UserID,UserName,CityName)

JS生成不重复随机数

说明 我们可以用Math.random()的方法轻松的生成 一个随机的数字,但是这个数字可能是重复的.有时候,我们需要一个不重复的随机数,可以用很多的方法来实现这个要求,以下方法是效率最高的. 解释 不重复的随机数往往是规定范围的,我们先声明一个在这个范围之内的数组,然后用sort方法对数组进行排序.而排序的方法里使用一个随机数,这个随机数使这个排序方法是不确定的.因此可以得到一个不重复的随机数组. 代码 1 <!DOCTYPE html> 2 <html> 3 <head&

利用Shell生成Zabbix监控的数字报表

我们都知道Zabbix是一个非常强大的监控工具,我们公司呢也在用Zabbix监控所有网站的状态. 最近有一个需求,就是我们需要生成一份报告,报告里要包含前一天一整天的时间节点和对应的响应时间,这样的报告用来统计网站的可用性达到了什么水准. ? Zabbix本身自带报告功能,可是都是图像的,并没有数据格式的.虽然没有提供数据格式的报表,但是Zabbix提供了一套API,可以根据需求获取对应的数据(JSON格式),于是我就写了个脚本,用来把每个监控的网址的监控数据输出到一个CSV文件中.(后续可以用

C# Random 生成不重复随机数

Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数

用C#生成不重复的随机数

对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称 作伪随机数.伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了.伪随机数的选 择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地"随机",随机种子的选择就显得非常重要.如果随机种子一样,那么同一个随机数发生器产生 的随机数也会一样.一