产生18位的随机数作为bigint

来源:互联网 发布:微易达网络推广 编辑:程序博客网 时间:2024/05/17 17:15

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[proc_Generate_Rand_Bigint]') AND type in (N'P', N'PC'))DROP PROCEDURE [dbo].[proc_Generate_Rand_Bigint]GO-- =============================================-- Author:yenange-- Create date: 2013-10-17-- Description:产生18位的随机数作为bigint-- =============================================CREATE PROCEDURE [dbo].[proc_Generate_Rand_Bigint]@frontIsYYYYMMDDHHMMSSBIT, --前面14位是否是时间@resultBigintBIGINT OUTASBEGINDECLARE @resultStr VARCHAR(18),@dateStr VARCHAR(50),@randStr1 VARCHAR(9),@randStr2 VARCHAR(9);SELECT@randStr1 = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 9),@randStr2 = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 9),@dateStr = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),120),'-',''),':',''),' ','')IF(@frontIsYYYYMMDDHHMMSS=1)BEGINset @resultStr=@dateStr+RIGHT(@randStr1,4) ENDELSEBEGINSET @resultStr=@randStr1+@randStr2IF(LEFT(@resultStr,1)='0')BEGINSET @resultStr='1'+RIGHT(@resultStr,17)ENDENDSET @resultBigint = CONVERT(BIGINT, @resultStr);ENDGOSET NOCOUNT ONDECLARE @r BIGINT;EXEC [proc_Generate_Rand_Bigint] 0,@r OUTSELECT @r--0==> 628336056134315476--1==> 201310171402033239

原创粉丝点击