我有一个表,有几个可空的整数列。出于几个原因,这是不可取的,因此我希望将所有空值更新为0,然后将这些列设置为NOT NULL。除了将null更改为0之外,还必须保留数据。

我正在寻找特定的SQL语法来更改列(称为ColumnA)为“非空”。假设数据已更新为不包含空值。

使用SQL server 2000。


当前回答

我有同样的问题,但字段过去默认为null,现在我想把它默认为0。这需要在mdb的解决方案后再添加一行:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

其他回答

您可以使用以下sql更改现有DB列的定义。

ALTER TABLE mytable modify mycolumn datatype NOT NULL;

你需要分两步完成:

更新表,使列中没有空值。

UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL

更改表以更改列的属性

ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

我有同样的问题,但字段过去默认为null,现在我想把它默认为0。这需要在mdb的解决方案后再添加一行:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

首先,使所有当前NULL值消失:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

然后,更新表定义以禁止“null”:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

这招对我很管用:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;