SQL Serverでランダムな文字列を生成する

方法

ビューとUDFを1つづつ作ります。

--RAND()がFUNCTION内で使用できないので...
CREATE VIEW
	V_RAND
AS
SELECT RAND() RND
GO

--UDF
CREATE FUNCTION
	RANDSTR
(
	@SEEDS AS VARCHAR(MAX),
	@LENGTH AS TINYINT
)
RETURNS VARCHAR(MAX)
AS 
BEGIN
	DECLARE @RTN AS VARCHAR(MAX) = ''
	DECLARE @I AS TINYINT = 0

	WHILE (@I < @LENGTH)
	BEGIN
		SET @I = @I + 1
		SET @RTN = @RTN + (SELECT SUBSTRING(@SEEDS, CAST(CEILING(RND * LEN(@SEEDS)) AS INTEGER), 1) FROM V_RAND)
	END
	RETURN @RTN
END
GO

使用例と結果

SELECT DBO.RANDSTR('0123456789abcdefghijklnmopqrstu', 10)
SELECT DBO.RANDSTR('ほげ', 10)
--------------------
072s289gml

(1 行処理されました)


--------------------
ほほげほげげげげげほ

(1 行処理されました)

Work! Enjoy it!