SQL Server: добавить столбец с вычисляемым полем - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь изменить таблицу, чтобы добавить дополнительный столбец, который имеет последние 3 цифры org_id. Я делаю это, потому что программное обеспечение, которое я использую, не может прочитать 34000000000000000002 из-за размера. Я хотел бы превратить 34000000000000000002 в 002 и поместить его в новый столбец. Я думал, что-то вроде ниже будет работать

alter table [org] add new_org_id integer value (select right(org_id,3));

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы были близки.См. документацию для правильного синтаксиса.

alter table [org] add new_org_id as right(org_id,3);

Кроме того, вы можете сделать этот постоянный вычисляемый столбец

PERSISTED Указывает, что компонент Database Engine будет физически сохранять вычисленные значения в таблице и обновлять значения при обновлении любых других столбцов, от которых зависит вычисляемый столбец.Пометка вычисляемого столбца как PERSISTED позволяет создать индекс для вычисляемого столбца, который является детерминированным, но не точным.Для получения дополнительной информации см. Индексы для вычисляемых столбцов.Любые вычисляемые столбцы, используемые в качестве разделительных столбцов разделенной таблицы, должны быть явно помечены как PERSISTED.Выражение computed_column_expression должно быть детерминированным, если указано PERSISTED.

0 голосов
/ 16 ноября 2018

Довольно близко, я думаю.

Я бы сделал

alter table [org] add new_org_id integer

UPDATE [org]
SET new_org_id = right(org_id,3);
...