sql server 生成随机字符串 如: 32U523

--USE [PaymentService]
GO

/****** Object:  StoredProcedure [dbo].[sp_CreateRandomInviteCode]    Script Date: 2016/1/18 9:11:20 ******/
DROP PROCEDURE [dbo].[sp_CreateRandomInviteCode]
GO

/****** Object:  StoredProcedure [dbo].[sp_CreateRandomInviteCode]    Script Date: 2016/1/18 9:11:20 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


/*
    
	DECLARE	@return_value int,
			@InviteCode nvarchar(max)

	EXEC	@return_value = [dbo].[sp_CreateRandomInviteCode]
			@DigitLength = 5,
			@InviteCode = @InviteCode OUTPUT


	SELECT	@InviteCode as N'@InviteCode'


	--SELECT	'|' + @InviteCode + '|' as N'@InviteCode'

	--SELECT	'Return Value' = @return_value

	--select char(65)
	--select char(90)
	
	--SELECT CHAR(65 + FLOOR(RAND()*26))

	--select  FLOOR(RAND()*5)

*/



CREATE proc [dbo].[sp_CreateRandomInviteCode](	
	@DigitLength INT=NULL,	
	@InviteCode VARCHAR(MAX)  output
)
AS
BEGIN
   DECLARE @INDEX INT    
   DECLARE @SQL NVARCHAR(MAX)
   DECLARE @RowCounts int
   DECLARE @BOOLBIT BIT  
   DECLARE @RandomStr NVARCHAR(MAX)
   DECLARE @RandomNum int

   DECLARE @randomLetter varchar(1)
   DECLARE @randomLetterPosition INT

   SET @BOOLBIT=1
   SET @RandomStr=''
   SET @INDEX=0

   IF(@DigitLength IS NULL OR @DigitLength<=0)
		SET @DigitLength=1

   SELECT @randomLetter= CHAR(65 + FLOOR(RAND()*26))
   SELECT @randomLetterPosition= FLOOR(RAND()* @DigitLength )
 
   WHILE @BOOLBIT=1
   BEGIN
	   WHILE @INDEX<@DigitLength
		   BEGIN  				 		
			  SET @RandomStr=@RandomStr+CONVERT(nvarchar, FLOOR(RAND()*10))		
			  SET @INDEX=(@INDEX+1)
		   END
	 
	   IF(@randomLetterPosition=0)
			 SET @InviteCode=@randomLetter + @RandomStr 	 
	   ELSE
			 SET @InviteCode=SUBSTRING(@RandomStr,1,@randomLetterPosition) 
				+ @randomLetter + SUBSTRING(@RandomStr,@randomLetterPosition,@DigitLength - @randomLetterPosition)
 
	   IF(EXISTS(SELECT * FROM DBO.[DoctorProfile] WHERE InviteCode=@RandomStr))
		   BEGIN
		      SET @INDEX=0	
			  SET @RandomStr='' 			 
		   END
	   ELSE
		   BEGIN
		       SET @BOOLBIT=0				 
		   END
	 
   END    

END

GO



执行结果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值