How to Generate Alphanumeric Random numbers using function in SQL Server 2008
21,020
Solution 1
As in function we cannot use NEWID() OR RAND() first need to create VIEW
For Function
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
Output:
9eEF44
5uUFA2
7hHFA7
.
.
.
For 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)
Output:
0aAF3C
5pP3CE
2wW85E
.
.
.
Solution 2
Try this:
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
Also,
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
can be used.
Solution 3
An extension of Dinesh answer.
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
The way you are generating GUID you can generate random number.
Solution 4
Below are the way to Generate 4 Or 8 Characters Long Random Alphanumeric String in SQL
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
Author by
Dinesh Reddy Alla
Updated on July 14, 2022Comments
-
Dinesh Reddy Alla almost 2 years
I need to generate alphanumeric random number with 6 character length and it should contain Numerics, Alphabets (Both Lowercase and Uppercase) check the query below.
I NEED TO IMPLEMENT IN FUNCTION. (In function is it possible to use NEWID(), RAND()).
SELECT SUBSTRING(CONVERT(VARCHAR(255), NEWID()),0,7)
Output:
23647D 06ABA9 542191 . . .
I Need Output as:
236m7D 3n64iD 6t4M7D . . .
-
Dinesh Reddy Alla over 9 yearsI cannot use RAND() or NEWID() in function.