Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLServer2008中使用函数生成字母数字随机数_Sql_Sql Server_Sql Server 2008_Select_Stored Procedures - Fatal编程技术网

如何在SQLServer2008中使用函数生成字母数字随机数

如何在SQLServer2008中使用函数生成字母数字随机数,sql,sql-server,sql-server-2008,select,stored-procedures,Sql,Sql Server,Sql Server 2008,Select,Stored Procedures,我需要生成6个字符长度的字母数字随机数,它应该包含数字、字母(小写和大写)检查下面的查询 我需要在函数中实现。(在函数中是否可以使用NEWID(),RAND() 输出: 我需要输出为: 试试这个: select cast((Abs(Checksum(NewId()))%10) as varchar(1)) + char(ascii('a')+(Abs(Checksum(NewId()))%25)) + char(ascii('A')+(Abs(Checksum(N

我需要生成6个字符长度的字母数字随机数,它应该包含数字、字母(小写和大写)检查下面的查询


我需要在函数中实现。(在函数中是否可以使用NEWID(),RAND()

输出:

我需要输出为:

试试这个:

 select cast((Abs(Checksum(NewId()))%10) as varchar(1)) + 
       char(ascii('a')+(Abs(Checksum(NewId()))%25)) +
       char(ascii('A')+(Abs(Checksum(NewId()))%25)) +
       left(newid(),5) Random_Number
而且

DECLARE@exclude varchar(50)
设置@exclude='0:@O[]`^\/'
声明@char
声明@lenchar
声明@output varchar(50)
设置@output=''
设置为@len=8
当@len>0开始时
选择@char=char(圆形(rand()*74+48,0))
如果charindex(@char,@exclude)=0,则开始
设置@output=@output+@char
设置为@len=@len-1
结束
结束
选择@output

可以使用。

在函数中,我们不能使用NEWID()或RAND()首先需要创建视图

功能

输出:

FORSELECT语句

输出:


Dinesh答案的扩展

create view NewID  as select newid() as [newid] , RAND() as [rand]


CREATE FUNCTION [dbo].[GenerateRandomID]
(
@length as int
)
RETURNS   VARCHAR(32)
AS
BEGIN
declare @randIndex as int 
declare @randstring  as varchar(36)

select  @randIndex = CEILING( (30 - @length) * [rand]) , @randstring=   Replace(CONVERT (varchar(40) , [newid]) , '-','') from getNewID

-- Return the result of the function
RETURN SUBSTRING(@randstring,@randIndex, @length)

END

生成GUID的方式可以生成随机数。

下面是在SQL中生成4或8个字符长的随机字母数字字符串的方式。

select LEFT(CONVERT(VARCHAR(36),NEWID()),4)+RIGHT(CONVERT(VARCHAR(36),NEWID()),4)


可能需要一个CLR函数。听起来从C#开始更容易。在函数中是否可以使用NEWID()@mohan111I在函数中不能使用RAND()或NEWID()。
 select cast((Abs(Checksum(NewId()))%10) as varchar(1)) + 
       char(ascii('a')+(Abs(Checksum(NewId()))%25)) +
       char(ascii('A')+(Abs(Checksum(NewId()))%25)) +
       left(newid(),5) Random_Number
    DECLARE @exclude varchar(50) 
    SET @exclude = '0:;<=>?@O[]`^\/'
    DECLARE @char char
    DECLARE @len char
    DECLARE @output varchar(50)
    set @output = ''
    set @len = 8

    while @len > 0 begin
       select @char = char(round(rand() * 74 + 48, 0))
       if charindex(@char, @exclude) = 0 begin
           set @output = @output + @char
           set @len = @len - 1
       end
    end

   SELECT @output
CREATE VIEW NewID as select newid() as new_id


DECLARE @new_id VARCHAR(255)


SELECT @new_id = new_id FROM newid


SELECT @Password = CAST((ABS(CHECKSUM(@new_id))%10) AS VARCHAR(1)) + 
CHAR(ASCII('a')+(ABS(CHECKSUM(@new_id))%25)) +
CHAR(ASCII('A')+(ABS(CHECKSUM(@new_id))%25)) +
LEFT(@new_id,3)


SELECT @PASSWORD
9eEF44
5uUFA2
7hHFA7
.
.
.
DECLARE @new_id VARCHAR(200)

SELECT @new_id = NEWID()

SELECT CAST((ABS(CHECKSUM(@new_id))%10) AS VARCHAR(1)) + 
CHAR(ASCII('a')+(ABS(CHECKSUM(@new_id))%25)) +
CHAR(ASCII('A')+(ABS(CHECKSUM(@new_id))%25)) +
LEFT(@new_id,3)
0aAF3C
5pP3CE
2wW85E
.
.
.
create view NewID  as select newid() as [newid] , RAND() as [rand]


CREATE FUNCTION [dbo].[GenerateRandomID]
(
@length as int
)
RETURNS   VARCHAR(32)
AS
BEGIN
declare @randIndex as int 
declare @randstring  as varchar(36)

select  @randIndex = CEILING( (30 - @length) * [rand]) , @randstring=   Replace(CONVERT (varchar(40) , [newid]) , '-','') from getNewID

-- Return the result of the function
RETURN SUBSTRING(@randstring,@randIndex, @length)

END
select LEFT(CONVERT(VARCHAR(36),NEWID()),4)+RIGHT(CONVERT(VARCHAR(36),NEWID()),4)
DECLARE @chars NCHAR(36)

SET @chars = N’0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’

DECLARE @result NCHAR(5)

SET @result = SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)

SELECT @result