如何使用SQL Server 2008中的函数生成字母数字随机数

Din*_*lla 4 sql sql-server select stored-procedures sql-server-2008

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

我需要实现功能.(在功能上可以使用NEWID(),RAND()).

SELECT SUBSTRING(CONVERT(VARCHAR(255), NEWID()),0,7)
Run Code Online (Sandbox Code Playgroud)

输出:

23647D
06ABA9
542191
.
.
.
Run Code Online (Sandbox Code Playgroud)

我需要输出为:

236m7D
3n64iD
6t4M7D
.
.
.
Run Code Online (Sandbox Code Playgroud)

Din*_*lla 6

在函数中我们不能使用NEWID()OR RAND()首先需要创建VIEW

对于功能

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
Run Code Online (Sandbox Code Playgroud)

输出:

9eEF44
5uUFA2
7hHFA7
.
.
.
Run Code Online (Sandbox Code Playgroud)

对于Select Statement

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)
Run Code Online (Sandbox Code Playgroud)

输出:

0aAF3C
5pP3CE
2wW85E
.
.
.
Run Code Online (Sandbox Code Playgroud)