Как обновить поле случайными данными?

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

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

MS-SQL 2000, кстати

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
3 330
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

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

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

Ответ принят как подходящий

update MyTable Set RandomFld =  CONVERT(varchar(10), NEWID())

С этим дополнением UPDATE table SET field = CONVERT (varchar (10), LEFT (NEWID (), 10))

Dan Williams 17.09.2008 18:51

К сожалению, здесь нет SQLServer, поэтому я не смог его протестировать.

James Curran 17.09.2008 18:58

Это присваивает каждой записи одно и то же значение randomm. stackoverflow.com/questions/94906/… будет рандомизировать каждую строку и работает в SQL2000

Adam 09.10.2008 01:59

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

UPDATE TBL SET Field = LEFT( CONVERT(varchar(255), @myid),10)

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

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

CAST(RAND() as varchar(10))

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

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

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

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

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

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

Другие вопросы по теме