我有一个表,其中包含几个可为空的整数列。由于多种原因,这是不可取的,因此我希望将所有null更新为0,然后将这些列设置为NOT NULL
。除了将null更改为之外0
,还必须保留数据。
我正在寻找将一列(称为)更改为“ ” 的特定SQL语法。假设数据已更新为不包含空值。ColumnA
not null
使用SQL Server 2000。
我有一个表,其中包含几个可为空的整数列。由于多种原因,这是不可取的,因此我希望将所有null更新为0,然后将这些列设置为NOT NULL
。除了将null更改为之外0
,还必须保留数据。
我正在寻找将一列(称为)更改为“ ” 的特定SQL语法。假设数据已更新为不包含空值。ColumnA
not null
使用SQL Server 2000。
Answers:
首先,使所有当前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];
这为我工作:
ALTER TABLE [Table]
Alter COLUMN [Column] VARCHAR(50) not null;
如果FOREIGN KEY CONSTRAINT
... ...如果主键表的列中不存在“ 0”,将出现问题。解决方案是...
步骤1:
使用此代码禁用所有约束:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
第2步:
RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)
第三步:
使用此代码启用所有约束:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
让我们举个例子:
TABLE NAME=EMPLOYEE
我想将列更改EMPLOYEE_NAME
为NOT NULL
。此查询可用于任务:
ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;