Here's another one:;WITH g(g) AS (SELECT CAST(NEWID() AS BINARY(10))),n(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM n WHERE n<10),a(a) AS (SELECT '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')SELECT (SELECT ''+SUBSTRING(a,CAST(SUBSTRING(g,n,1) AS TINYINT)%36+1,1) FROM g CROSS JOIN n CROSS JOIN a ORDER BY NEWID() FOR XML PATH(''))
You can further randomize and control the characters by changing the string in the A CTE.edit: fixed a dupe character