Here is a script to generate randon characters in SQL Server
It also allows you to generate the characters in random as well as required format. There are four types of format the function supports:
Formats:
1. ‘Proper’ – proper name form (i.e. Xxxxx)
2. ‘Upper’ – all uppercase (i.e. XXXXX)
3. ‘Lower’ – all lowercase (i.e. xxxxx)
5. ‘Mixed’ – randomly mixed case (i.e. xXxxxXXxx)
Create View dbo.Q_Random as
Select Rand() as [RandomNumber]
GO
Create Function dbo.fn_GenerateText
(@Length integer, @Format varchar(6) = 'Mixed')
Returns varchar(256)
as
Begin
-- Formats:
-- 'Proper' - proper name form (i.e. Xxxxx)
-- 'Upper' - all uppercase (i.e. XXXXX)
-- 'Lower' - all lowercase (i.e. xxxxx)
-- 'Mixed' - randomly mixed case (i.e. xXxxxXXxx)
-- null - randomly mixed case (i.e. xXxXxxxxxX)
--
Declare
@RandomValue varchar(256),
@Count integer,
@RandomNumber float,
@RandomNumberInteger integer,
@CurrentCharacter char(1),
@ValidCharactersLength integer,
@ValidCharacters varchar(255)
Set @RandomValue = '';
If (@Length = 0)
Goto ReturnData
If (@Format = 'Mixed')
Set @ValidCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
else
Set @ValidCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
Set @ValidCharactersLength = Len(@ValidCharacters);
Set @CurrentCharacter = '';
Set @RandomNumber = 0;
Set @RandomNumberInteger = 0;
Set @Count = 1;
While @Count <= @Length
Begin
Set @RandomNumber = (Select RandomNumber from Q_Random);
Set @RandomNumberInteger = Convert(integer, ((@ValidCharactersLength - 1) * @RandomNumber + 1));
Set @CurrentCharacter = SubString(@ValidCharacters, @RandomNumberInteger, 1);
Set @RandomValue = @RandomValue + @CurrentCharacter;
Set @Count = @Count + 1;
End
If @Format = 'Lower'
Set @RandomValue = Lower(@RandomValue);
If @Format = 'Upper'
Set @RandomValue = Upper(@RandomValue);
If @Format = 'Proper'
Set @RandomValue = Upper(Left(@RandomValue, 1)) + Substring(Lower(@RandomValue), 2, (@Length - 1));
-- ... or the default gives random `casing`, and 'Mixed' gives random alphanumeric `casing`
ReturnData:
Return @RandomValue
End
Sample Executions:
Select dbo.fn_GenerateText(10,’Lower’)
Select dbo.fn_GenerateText(10,’Upper’)
Select dbo.fn_GenerateText(10,’Mixed’)–default value
Select dbo.fn_GenerateText(10,’Proper’)