Изменение максимальной длины столбца varchar?

188

Я пытаюсь обновить длину столбца varchar с 255 символов до 500 без потери содержимого. Я ранее отбрасывал и воссоздавал таблицы, но никогда не сталкивался с утверждением alter, которое, как мне кажется, мне нужно использовать для этого. Я нашел документацию здесь: ALTER TABLE (Transfact-SQL), однако я не могу понять, как это сделать.

Пока у меня есть следующее (по сути, ничего, к сожалению):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

Как мне подойти к этому? Есть ли лучшая документация для этого оператора (я провел несколько поисков примера оператора, но оказался пустым)?

Майкл А
источник

Ответы:

362

Тебе нужно

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

Но не забудьте указать NOT NULLявно при желании.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

Если вы оставите это неуказанным, как показано ниже ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

Тогда столбец по умолчанию разрешит пустые значения, даже если он изначально был определен как NOT NULL. то есть пропуск спецификации в ALTER TABLE ... ALTER COLUMNвсегда рассматривается как.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

Это поведение отличается от того, которое используется для новых столбцов, созданных ALTER TABLE(или во CREATE TABLEвремя). Там обнуляемость по умолчанию зависит от ANSI_NULL_DFLTнастроек.

Мартин Смит
источник
Не могли бы вы объяснить цель добавления '[NOT] NULL' здесь? Просто любопытно, почему в твоем ответе было это, а Митча нет?
Майкл А
Таким образом, [NOT NULL] указывает, что значения NULL не могут быть помещены в столбец?
Майкл А
3
@ Майкл - Да, без квадратных скобок. Квадратные скобки указывают, что бит синтаксиса является необязательным. Если вы опустите его, то разрешение NULLпо умолчанию.
Мартин Смит
1
отсортировано :) :) ALTER COLUMN MY_COL УСТАНОВИТЬ ТИП ДАННЫХ VARCHAR (100)
Kdean571