您的位置:首页 > 产品设计 > UI/UE

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

2012-12-18 17:19 609 查看
--前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


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息