Hola ABC-eLearners, a modo de ayuda para todos los lectores con ganas de aprender SQL, voy a compartirles mis experiencias, las que considere más útiles para todos. Hoy les comparto una función que te permitirá generar códigos alfanuméricos, numéricos y de sólo letras del tamaño que quieres. Esta función es muy útil para generar códigos muy seguros de descuentos y ofertas para dar a los clientes.
CREATE FUNCTION [dbo].[f_Random_Caracters]
(
@size AS INT, --Tamaño de la cadena aleatoria
@op AS VARCHAR(2) --Opción para letras(ABC..), números(123...) o ambos.
)
RETURNS VARCHAR(62)
AS
BEGIN
DECLARE @chars AS VARCHAR(52),
@numbers AS VARCHAR(10),
@strChars AS VARCHAR(62),
@strPass AS VARCHAR(62),
@index AS INT,
@cont AS INT
SET @strPass = ''
SET @strChars = ''
SET @chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
SET @numbers = '0123456789'
SET @strChars = CASE @op WHEN 'C' THEN @chars --Letras
WHEN 'N' THEN @numbers --Números
WHEN 'CN' THEN @chars + @numbers --Ambos (Letras y Números)
ELSE '------' END
SET @cont = 0
WHILE @cont < @size BEGIN
--Uso de la vista para el Rand() y no generar error.
SET @index = ceiling( ( SELECT rnd FROM vwRandom ) * (len(@strChars)))
SET @strPass = @strPass + substring(@strChars, @index, 1)
SET @cont = @cont + 1
END
RETURN @strPass
END
Vista
CREATE VIEW vwRandom
AS
SELECT RAND() as Rnd
Ejemplo (alfanúmerico)
SELECT [dbo].[f_Random_Caracters] (15, 'CN')
--Resultado: kCH8icXZooYrAsV
Ejemplo (Númerico)
SELECT [dbo].[f_Random_Caracters] (10, 'N')
--Resultado: 3939630638
Ejemplo (Letras)
SELECT [dbo].[f_Random_Caracters] (12,'C')
--Resultado: flZhPzZjgoOL
Comenta qué otras funciones más necesitarías para reusar y optimizar tu tiempo mientras programas en Base de datos.
Deja un comentario