巧用UUID生成随机数或随机字符串

--前3条数据

use Test
go

select top 3 R1 = RAND(),R2 = RAND()
From sys.objects


--随机生成区间

--Declare @RandMin int ,@RandMax int

--select @RandMin = -100 ,@RandMax = 100

--select top 100 RandValue = ABS(CHECKSUM(NewID()))%(1+@RandMax - @RandMin) + @RandMin
--From sys.objects

 

Declare @RandMin datetime ,@RandMax datetime
select @RandMin = '20100101' ,
  @RandMax = '20101231'
select top 100 RandValue = Dateadd(Hour,ABS(CHECKSUM(NewID()))%(1+DateDiff(Hour,@RandMax,@RandMin)),@RandMin)
From sys.objects

 

--select * from ::fn_helpcollations()  --查看数据库排序规则


go

Create View dbo.V_NewID
as
 select RE = CONVERT(char(36),NEWID())
go

Create Function dbo.FN_RandStr(
 @StrLen int
)returns nvarchar(max)
as
Begin
 IF @StrLen < 0
 return (null)
 Declare @re nvarchar(max),@len int
 Select @re = re,
  @len = 36
 From dbo.V_NewID
 While @len < @Strlen
 Begin
  Select @re = @re +re,
    @len = 36 + @len
  From dbo.V_NewID
 End
 Set @re = Left(@re,@StrLen);
 ;With
 SN as 
 (
  Select Top 11
    RowID = Row_Number() Over(Order by Object_id) - 1
  From Sys.objects
 ),
 CH as
 (
  Select 
   ch = Case RowID when 10 then '-' else Convert(char(1),RowID) end,
   Chv =(
    Select Chv = char(ABS(CheckSum(re))%26+97)
    From V_NewID
   )
  From SN
 )
 Select @re = Replace(@re,ch,chv)
 From CH
 return(@re)
 
End

go

Select Top 100 RandValue = dbo.FN_RandStr(50)
From sys.objects o1, sys.objects o2
go

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值