SQL Server добавляет новый столбец в таблицу и заполняет случайное целое число в диапазоне

Я понимаю, как добавить новый столбец и значение по умолчанию в таблицу.

ALTER TABLE Cards
ADD Amex int NOT NULL DEFAULT(1) // how can I add a random number (between 1, to 10) or random date (jan to feb etc)?
GO

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

Изменить - ответ снизу:

Create table cards (
  Amex int NOT NULL DEFAULT (cast(right(cast(checksum(newid()) as varchar(255)), 1) as int) + 1)
);

person aggie    schedule 15.10.2014    source источник
comment
Для случайных дат проверьте этот пост - stackoverflow.com/questions/794637/   -  person kvothe    schedule 15.10.2014


Ответы (2)


Вы можете сделать обновление. Для числа от 1 до 10 должно работать следующее:

update cards
    set Amex = cast(right(cast(checksum(newid()) as varchar(255)), 1) as int) + 1

РЕДАКТИРОВАТЬ:

Вот пример использования этого в операторе create table.

person Gordon Linoff    schedule 15.10.2014
comment
Как насчет случайных дат в диапазоне или вне списка. - person aggie; 15.10.2014
comment
@эгги. . . Вы могли бы сделать что-то подобное с checksum(newid()), арифметикой по модулю и датами начала и окончания. Часть вопроса о датах гораздо более расплывчата, чем часть о целых числах; плюс заголовок о целых числах, а не о датах. - person Gordon Linoff; 15.10.2014
comment
попробовал это -> 'ALTER TABLE Cards ADD Amex int NOT NULL DEFAULT (cast (right (cast (checksum (newid ()) as varchar (255)), 1) as int) + 1)' italic_//sql выдает мне ошибки _italic - person aggie; 15.10.2014

другой способ для случайного целого числа от 0 до 10 в sql-сервере:

update cards  
set Amex = CRYPT_GEN_RANDOM(2) % 11

вот трюк для случайных названий месяцев:

= DATENAME(month, DATEADD(month, (CRYPT_GEN_RANDOM(2) % 13), getdate()))
person Mikhail Timofeev    schedule 15.10.2014