Как обновить поле со случайными данными? - PullRequest
0 голосов
/ 17 сентября 2008

У меня есть новое поле varchar (10) в базе данных с 1000+ записями. Я хотел бы обновить таблицу, чтобы иметь случайные данные в поле. Я ищу решение SQL.

Я знаю, что могу использовать курсор, но это выглядит не элегантно.

MS-SQL 2000, BTW

Ответы [ 8 ]

5 голосов
/ 17 сентября 2008
update MyTable Set RandomFld =  CONVERT(varchar(10), NEWID())
1 голос
/ 17 сентября 2008

Что-то вроде (непроверенный код):

UPDATE yourtable
SET yourfield= CHAR(32+ROUND(RAND()*95,0));

Очевидно, объединить больше случайных символов, если вы хотите до десяти символов. Возможно, оптимизатор запросов может установить для всех полей одно и то же значение; в этом случае я бы попробовал

SET yourfield=LEFT(yourfield,0)+CHAR…

, чтобы заставить оптимизатор пересчитывать каждый раз выражение.

1 голос
/ 17 сентября 2008

Почему бы не использовать первые 10 символов контрольной суммы md5 текущей временной метки и случайного числа?

1 голос
/ 17 сентября 2008

Кроме того, если вы просто делаете это для тестирования или однократного использования, я бы сказал, что элегантное решение на самом деле не нужно.

1 голос
/ 17 сентября 2008

Возможно, вы сможете адаптировать что-то , например, , чтобы загрузить тестовый набор данных значений, в зависимости от того, что вы ищете

0 голосов
/ 17 сентября 2008

если вы используете SQL Server, вы можете использовать

CAST(RAND() as varchar(10))

РЕДАКТИРОВАТЬ : Это будет работать только внутри итерации. Как часть многострочной вставки он будет использовать один и тот же результат RAND () для каждой строки.

0 голосов
/ 17 сентября 2008

Как насчет этого:

UPDATE TBL SET Field = LEFT( CONVERT(varchar(255), @myid),10)
0 голосов
/ 17 сентября 2008

Если это единовременная вещь, чтобы просто ввести данные в систему, я действительно не вижу проблем с использованием курсора, так как я ненавижу курсоры, у них есть свое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...