我想将表列更改为可为空。我使用过:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL


这会在Modify处给出错误。正确的语法是什么?

评论

请以后发布错误消息

我已删除了SQL Server标记,因为它看起来已成为所有人的免费通用软件。

#1 楼

假设SQL Server(根据您之前的问题):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL


用实际的数据类型替换INT

#2 楼

如果这是MySQL语法,则该类型将丢失,如其他一些响应指出的那样。
正确的MySQL语法将是:为了使MySQL用户更加清晰。

#3 楼

对于Oracle数据库10g用户:

alter table mytable modify(mycolumn null);


否则尝试时得到“ ORA-01735:无效的ALTER TABLE选项”

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;


评论


太酷了,您不必指定数据类型,只需将其设置为“ null”即可将其设置为可为空。

–Gabe Halsmer
2014年7月8日在22:37

#4 楼

在PostgresQL中为:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;


#5 楼

尽管我不知道您使用的是什么RDBMS,但您可能需要给出整个列的说明,而不仅仅是说您现在希望它可以为空。例如,如果当前为INT NOT NULL,则应发出ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT

评论


这是一个正确的描述性答案,因此只需澄清一下是否为空|未指定NOT NULL,则该列可以为空。

–Hamid Heydarian
17年8月11日在6:41



#6 楼

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


#7 楼

对于HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;


#8 楼

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;


这将为您工作。

如果要更改not null列以允许null,则无需包含not null子句。因为默认列不为空。

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;


#9 楼

这取决于您使用的是哪种SQL Engine,在Sybase中,您的命令是否可以正常运行:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;


#10 楼

Oracle


ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);


评论


对于@IgorS的答案,此答案是否带来任何新的东西? SQL_SCRIPT代表什么?

– jpeg
19年5月29日在14:05