天天看点

SQL 十位随机数(大小写字母+数据)

SQL 十位随机数(大小写字母+数据)

USE [TEST]

GO

/ Object: UserDefinedFunction [dbo].[RANDTENNUMS] Script Date: 2019/7/23 15:40:16 **/

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE function [dbo].[RANDTENNUMS]()

returns varchar(10)

as

begin

DECLARE @i int

DECLARE @flag int

DECLARE @SerialNumber nvarchar(20)

DECLARE @RANDS Numeric(38,38)

--初始化设定

SET @i=1

SET @SerialNumber = ''

--生成10位随机码

WHILE @i<11

BEGIN

--设置随机,这个随机会选择字母(大小写)还是数字

SELECT @RANDS = RAND_A FROM [dbo].[VW_RAND]

SET @flag=ceiling(@RANDS *3)

IF @flag=1

--随机字母(大写去除大写的O)

WHILE char(65+ceiling(@RANDS * 25)) = 'O'

END

SELECT @SerialNumber=@SerialNumber+char(65+ceiling(@RANDS * 25))

else if @flag=2

--随机字母(小写去除小写的o)

WHILE char(97+ceiling(@RANDS * 25)) = 'o'

select @SerialNumber=@SerialNumber+char(97+ceiling(@RANDS * 25))

end

else begin

--随机数字 1至9的随机数字(整数)

WHILE cast(ceiling(@RANDS * 9) as varchar(1)) = '0'

select @SerialNumber=@SerialNumber+cast(ceiling(@RANDS * 9) as varchar(1))

--进行下一个循环

SET @i=@i+1

RETURN @SerialNumber;

原文地址

https://www.cnblogs.com/hEnius/archive/2019/07/23/11232471.html