web-dev-qa-db-ja.com

varchar列の最大長を変更しますか?

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

私はこれまでに次のものを持っています(本質的に残念なことに何も):

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

どうやってこれに取り組むのですか?この文についてもっと良いドキュメントがありますか(私は例文を検索しましたが、空になりました)。

158
Michael A

あなたが必要

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として定義されていても、デフォルトでNULLを許可します。すなわちALTER TABLE ... ALTER COLUMNの指定を省略することは常にとして扱われます。

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

この動作は、ALTER TABLEで(またはCREATE TABLE時に)作成された新しい列に使用されるものとは異なります。デフォルトのNULL入力可否は ANSI_NULL_DFLT 設定によって異なります。

310
Martin Smith

ALTERで列サイズを大きくしてもデータは失われません。

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

@Martinが指摘するように、NULL | NOT NULLを明示的に指定することを忘れないでください

22
Mitch Wheat

ALTER TABLE table name modify COLUMN column name varchar( "length");

4
anonymous

私も疑いを持っていました、私のために働いたのは

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  
0
Rahul Gurung
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

質問に遅れて-しかし、私はOracle SQL Developerを使用しており、@ anonymousの回答が最も近いが、これに対するクエリを編集するまで構文エラーを受け取り続けた。

これが誰かを助けることを願って

0
Jedo

IntelliJ内でMaria-DBおよびDB-Navigatorツールを使用すると、MODIFY Columnが代わりに機能しましたAlter Column

0
Rahul Sharma