我有一个包含以下列的表格:
ID Name
1 test1
2 test2
现在我添加了新列IsConfirmed
。此列包含null
所有行。
ID Name IsConfirmed
1 test1 null
2 test2 null
如何使用 T-SQL 为表中的所有行设置false
列IsConfirmed
?
谢谢
我有一个包含以下列的表格:
ID Name
1 test1
2 test2
现在我添加了新列IsConfirmed
。此列包含null
所有行。
ID Name IsConfirmed
1 test1 null
2 test2 null
如何使用 T-SQL 为表中的所有行设置false
列IsConfirmed
?
谢谢
UPDATE YourTableName
SET IsConfirmed=0
WHERE isConfirmed is Null
@JohnFx 的建议是手头问题的完美解决方案。但是,您可能想知道如何防止这种情况出现,同时可能解决其他潜在问题。
特别是,您想立即将 NULL 替换为 0 的事实可能表明您从一开始就不想让列保存 NULL。如果确实如此,您应该添加带有说明符的列NOT NULL
:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
当然,如果您尝试将NOT NULL
列添加到非空表中,如果您没有同时为该列提供默认值,您将收到错误消息,因为 SQL Server 会尝试使用 NULL 来添加列,其中,根据定义,是不允许的。因此,NOT NULL
改为添加这样的列:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
CONSTRAINT DF_tablename_IsConfirmed DEFAULT (0)
该部分是可选的,您可以仅保留,但我仍然建议您为所有约束(包括默认值)提供明确的名称,因为这样您可以更轻松地删除/重新创建它们。出于同样的原因(为了让您更轻松地管理约束),您最好使用固定模式来命名约束。上述语句中的模式(for ,后跟表名,后跟列名)只是一个示例,您很可能会想出一个不同的模式。但是一旦你有了,就保持一致。CONSTRAINT DF_tablename_IsConfirmed
DEAFULT (0)
DF
DEFAULT