列をNULL可能に変更する


318

テーブルの列をNULL可能に変更したいのですが。利用した:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

これにより、でエラーが発生しModifyます。正しい構文は何ですか?


7
今後、エラーメッセージを投稿してください
2010

1
SQL Serverタグを削除したのは、これが一般的に無料になったためです。
マーティン・スミス

回答:


514

仮定SQL Server(前の質問に基づく):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

INT実際のデータ型に置き換えます。


43

Oracle Database 10gユーザーの場合:

alter table mytable modify(mycolumn null);

それ以外の場合、「ORA-01735:無効なALTER TABLEオプション」が表示されます

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

いいですね、データ型を指定する必要はありません。nullにするために "null"を指定するだけです。
Gabe Halsmer、2014

41

これがMySQL構文である場合、他のいくつかの応答が指摘するように、型が欠落していることになります。正しいMySQL構文は次のようになります。

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

MySQLユーザーにわかりやすくするためにここに投稿します。



5

どのRDBMSを使用しているかはわかりませんが、おそらく列仕様全体を指定する必要があります。これをnull可能にしたいだけではありません。たとえば、現在のINT NOT NULL場合は、を発行する必要がありますALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT


これは正しい説明的な回答ですNullNOT NULLが指定されていない場合、列はnull入力可能になります。
Hamid Heydarian 2017

4

他の人が観察したように、コマンドの正確な構文は、DBMSの種類によって異なります。使用する構文はOracleで機能します。

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                      NOT NULL VARCHAR2(17)

SQL> alter table MACAddresses
  2       modify corrected_MACAddress null
  3  /

Table altered.

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                               VARCHAR2(17)

SQL>

0

HSQLDBの場合:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

これはあなたのために働くでしょう。

null以外の列をnullを許可するように変更する場合は、not null句を含める必要はありません。デフォルトの列はnullにならないためです。

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

これは、使用しているSQLエンジンによって異なります。Sybaseでは、コマンドは正常に機能します。

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.