• Don't overly like.

    Off the top of my head: -

    DECLARE @caps VARCHAR(24),

    @lower VARCHAR(25),

    @numbers VARCHAR(8),

    @string VARCHAR(250)

    SET @caps = 'ABCDEFGHJKLMNPQRSTUVWXYZ'

    SET @lower = 'abcdefghijkmnopqrstuvwxyz'

    SET @numbers = '23456789'

    SET @string = @caps + @lower + @numbers;

    WITH pass_cte (the_output)

    AS (SELECT Substring(@caps, ( Abs(Checksum(Newid()))%Len(@caps) ) + 1, 1)

    UNION ALL

    SELECT Substring(@lower, ( Abs(Checksum(Newid()))%Len(@lower) ) + 1, 1)

    UNION ALL

    SELECT Substring(@lower, ( Abs(Checksum(Newid()))%Len(@lower) ) + 1, 1)

    UNION ALL

    SELECT Substring(@numbers, ( Abs(Checksum(Newid()))%Len(@numbers) ) + 1

    , 1)

    UNION ALL

    SELECT Substring(@numbers, ( Abs(Checksum(Newid()))%Len(@numbers) ) + 1

    , 1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1)

    UNION ALL

    SELECT Substring(@string, ( Abs(Checksum(Newid()))%Len(@string) ) + 1,

    1))

    SELECT TOP 1 (SELECT ( CAST (the_output AS VARCHAR(8000)) )

    FROM pass_cte s2

    FOR XML PATH('')) AS the_output

    FROM pass_cte s1


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/