2012-01-12 8 views
110

私は、内容を失うことなく、varcharカラムの長さを255文字から500に更新しようとしています。以前はテーブルを削除して再作成しましたが、これを行うために使用する必要があると思われる変更ステートメントには一度も触れていません。私はここにドキュメントを見つけた:ALTER TABLE (Transfact-SQL)しかし、私はそれを頭や尾を作ることはできません。varchar列の最大長を変更しますか?

私はこれまでのところ(残念ながら、本質的に何もない)、次います

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

は、私はこれをどのようにアプローチしますか?このステートメントのためのより良いドキュメントがありますか(例文を検索しましたが空になっています)

答えて

212

あなたは

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時)で作成した新しい列のために使用されるものとは異なっています。既定のNULL可能性はANSI_NULL_DFLTの設定によって異なります。 ALTER

+0

、追加の目的を説明してもらえ「[NOT] NULL」を指定することを忘れないでください?あなたの答えがなぜこれを持っていたのか分かりません。 – Codingo

+0

@MitchWheat - ["ANSI COLUMNのデフォルトは常にオンです;指定されていない場合、列はNULL可能です。"](http://msdn.microsoft.com/en-us/library/ms190273.aspx) –

+0

So [ NOT NULL]は、NULL値が列に配置されないことを指定しますか? – Codingo

16

増加列のサイズは、すべてのデータを失うことはありません。

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

@Martinが指摘するように、ここで明示的にNULL | NOT NULL

関連する問題