我有一个表有几个可以为空的整数列.由于多种原因,这是不可取的,所以我希望将所有空值更新为0,然后将这些列设置为NOT NULL
.除了将空值更改为0
,必须保留数据.
我正在寻找特定的SQL语法来将列(调用它ColumnA
)改为" not null
".假设数据已更新为不包含空值.
使用SQL Server 2000.
首先,使所有当前的NULL值消失:
UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL
然后,更新表定义以禁止NULL:
ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL
我有同样的问题,但该字段用于默认为null,现在我想将其默认为0.这需要在mdb的解决方案后再添加一行:
ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];
您必须分两步完成:
更新表,以便列中没有空值.
UPDATE MyTable SET MyNullableColumn = 0 WHERE MyNullableColumn IS NULL
更改表以更改列的属性
ALTER TABLE MyTable ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
对于Oracle 11g,我能够更改列属性,如下所示:
ALTER TABLE tablename MODIFY columnname datatype NOT NULL;
否则abatichev的回答似乎很好.你不能重复改变 - 它抱怨(至少在SQL Developer中)该列已经不是null.
这对我有用:
ALTER TABLE [Table] Alter COLUMN [Column] VARCHAR(50) not null;
只要该列不是唯一标识符
UPDATE table set columnName = 0 where columnName is null
然后
更改表并将字段设置为非null并指定默认值0
这似乎更简单,但只适用于Oracle:
ALTER TABLE [Table] ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
此外,通过这种方式,您还可以添加列,而不仅仅是更改列.如果值为null,则在此示例中更新为默认值(0).