標題說明了一切。我需要創建一個表格(ID,名字,姓氏),這些表格將隨機生成一個隨機長度的'單詞',並從我的'字母'創建。每個單詞需要由數據庫隨機生成。整個表應該有1,000,000行。如何在INSERT INTO語句中使用函數[SQL SERVR 2016]
讓我填寫你到目前爲止所做的工作。
創建一個VIEW,其產生隨機數:
CREATE VIEW [dbo].[RANDOM] AS SELECT RAND() RandomResult
創建一個標量函數從集確定 '字母' 的生成隨機lengh '單詞' :
CREATE FUNCTION [dbo].[WordGenerator] (@RandomWord VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @Alphabet VARCHAR(33) = 'abcdefghijklmnoprstuówxyzęąśłżźćń', @StrLength INT, @LoopCount INT, @RandomString VARCHAR(MAX), @AlphabetLength INT; SELECT @StrLength = (SELECT RandomResult FROM dbo.Random) * 4 + 7, @LoopCount = 0, @RandomString = '', @AlphabetLength = LEN(@Alphabet); WHILE (@LoopCount < @StrLength) BEGIN SELECT @RandomString = @RandomString + SUBSTRING(@Alphabet, CONVERT(INT, (SELECT RandomResult FROM dbo.Random) * @AlphabetLength), 1) SET @LoopCount = @LoopCount + 1; END RETURN @RandomString; END
現在我想在INSERT INTO子句中使用名爲'WordGenerator'的這個功能,但它根本無法工作,因爲我無法調用它。
我怎麼能說我的功能,每一個時間它應該產生一個新的隨機字?使用SELECT TOP 1 RandomWord FROM dbo.WordGenerator()
不起作用。使用SELECT dbo.WordGenerator()
不起作用。使用SELECT * FROM dbo.WordGenerator()
不起作用。
任何想法?
這不是一個表值函數。所以只需調用SELECT dbo.WordGenerator()...不知道爲什麼你有一個參數在那裏。 – pmbAustin