У меня есть следующий SQL для создания моего случайного varchar
с использованием пользовательской функции generateString()
.Использование случайного строкового значения для обновления всех строк в столбце для целей тестирования
CREATE VIEW rndView
AS
SELECT RAND() rndResult
GO
CREATE FUNCTION RandFn()
RETURNS DECIMAL(18,18)
AS
BEGIN
DECLARE @rndValue DECIMAL(18,18)
SELECT @rndValue = rndResult
FROM rndView
RETURN @rndValue
END
GO
ALTER FUNCTION generateString()
RETURNS VARCHAR
AS
BEGIN
DECLARE @exclude varchar(50)
SET @exclude = '0:;<=>[email protected][]`^\/'
DECLARE @char char
DECLARE @len char
DECLARE @output varchar(50)
SET @output = ''
SET @len = 8
DECLARE @random DECIMAL(18,18) = (SELECT dbo.RandFn())
while @len > 0 begin
select @char = char(round(@random * 74 + 48, 0))
if charindex(@char, @exclude) = 0 begin
set @output = @output + @char
set @len = @len - 1
end
end
RETURN @output
END
Однако, при попытке использовать эту функцию в UPDATE
пункта ниже, запрос никогда не заканчивается. У меня менее 100 записей. Цель состоит в том, чтобы получить случайные varchar
данные во все строки на определенном столбце таблицы ...
UPDATE dbo.Inci
SET SerialText = dbo.generateString()
Есть ли у вас какие-либо ограничения в случайных данных 'varchar', как будто это должно быть 8 символов или у него должен быть один символ по крайней мере, что-нибудь в этом роде? –
Нет, мне просто нужны случайные данные varchar в поле. Все прямо сейчас в столбце NULL и не подходит для тестирования. – vercingortix
Затем просто используйте 'Newid()'. Что-то вроде этого 'UPDATE dbo.Inci SET SerialText = newid()' –