sql函数 得到 由 年月日时分秒+三位内的随机数 组成的随机数

由于函数内不能调用GetDate()以及Rand()这样的不确定函数
所以只有变通的去实现
年月日时分秒 就直接由GetDate()做为参数 传入该Function
而1~1000间的随机数 就借助于存储随机数的 视图来实现

--创建视图 V_RandNum

SET  QUOTED_IDENTIFIER  ON  
GO
SET  ANSI_NULLS  ON  
GO

CREATE   VIEW  dbo.V_RandNum
AS
SELECT   CAST ( RAND ()  *  ( 1000   -   1 +   1   AS   INT AS  P2

GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

--创建函数 FN_GetRandNum
SET  QUOTED_IDENTIFIER  ON  
GO
SET  ANSI_NULLS  ON  
GO


CREATE       FUNCTION  FN_GetRandNum( @DT   DATETIME )

RETURNS   BIGINT

AS

BEGIN

    
-- @P1 年月日时分秒
     DECLARE   @P1   VARCHAR ( 20 )

    
SELECT   @P1   =   CONVERT ( VARCHAR ( 20 ), @DT , 20 )  
    
SET   @P1   =   REPLACE ( @P1 , ' - ' , '' )
    
SET   @P1   =   REPLACE ( @P1 , ' : ' , '' )
    
SET   @P1   =   REPLACE ( @P1 , '   ' , '' )
    


    
-- @P2 随机数
         DECLARE   @P2   VARCHAR ( 3 )
    
SELECT   @P2 = P2  FROM  V_RandNum

    
    
-- @R  返回的值
     DECLARE   @R   CHAR ( 20 )
    
SET   @R   = @P1   +   @P2
    
    
RETURN   CAST ( @R   AS   BIGINT )

END


GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

--调用该函数
SELECT TestDB.dbo.FN_GetRandNum(GetDate())
--结果为
20070917143820413
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值