Не уверен, что крайне важно получить строку на основе внешне сгенерированного случайного числа, но если вам просто нужно случайное слово заданной длины, вы можете сделать что-то вроде этого ...
Установка:
DROP TABLE IF EXISTS DICTIONARY;
CREATE TABLE DICTIONARY (
ID int,
WORD nvarchar(255),
LENGTH AS LEN(WORD),
CONSTRAINT DICTIONARY_PK PRIMARY KEY (ID),
);
CREATE INDEX DICTIONARY_I1 ON DICTIONARY (LENGTH) INCLUDE (WORD);
INSERT INTO DICTIONARY (ID, WORD) VALUES
(1, 'able'),
(2, 'acid'),
(3, 'about'),
(4, 'boss'),
(5, 'brain'),
(6, 'child'),
(7, 'computer'),
(8, 'hint'),
(9, 'human'),
(10, 'ichthyosaur'),
(11, 'mother'),
(12, 'otorhinolaryngologist');
Запрос на получение случайной строки заданной длины (в данном примере 4):
DECLARE @length int = 4;
SELECT TOP 1 * FROM DICTIONARY WHERE LENGTH = @length ORDER BY NEWID();
План запроса хорош, что может быть важно для большой таблицы и / или частых запросов:
![Query Plan](https://i.stack.imgur.com/MIvsG.png)