2023-10-11 10:00:11

将列更改为空

我想改变一个表列为空。我用过:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

这将在修改处给出一个错误。正确的语法是什么?


当前回答

正如其他人所观察到的,该命令的精确语法在不同类型的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>

其他回答

确保您添加了要修改的列的data_type。

ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DATA_TYPE NULL;

这取决于你使用的SQL引擎,在Sybase中你的命令可以正常工作:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

在PostgresQL中是:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

对于HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

如果这是MySQL语法,类型就会丢失,就像其他一些响应指出的那样。 正确的MySQL语法应该是:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

为了让MySQL用户更清楚,我在这里发帖。