我有一个包含以下列的表:
ID Name
1 test1
2 test2
现在我添加了新列IsConfirmed
。此列在所有行中都包含null
。
ID Name IsConfirmed
1 test1 null
2 test2 null
如何使用T-SQL将false
到IsConfirmed
列设置为表中的所有行?
由于
答案 0 :(得分:18)
UPDATE YourTableName
SET IsConfirmed=0
WHERE isConfirmed is Null
答案 1 :(得分:2)
@JohnFx's suggestion是解决手头问题的完美解决方案。但是,您可能希望有兴趣知道如何防止出现这种情况,同时可能解决其他潜在问题。
特别是,您希望立即用0替换NULL这一事实可能表明您从未希望该列首先保留NULL。如果确实如此,您应该使用NOT NULL
说明符添加列:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
当然,如果您尝试将NOT NULL
列添加到非空表中,如果您还为列提供默认值,则会出现错误,因为SQL Server会尝试添加带有NULL的列,根据定义,不允许使用NULL。因此,请添加NOT NULL
这样的列:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
CONSTRAINT DF_tablename_IsConfirmed DEFAULT (0)
CONSTRAINT DF_tablename_IsConfirmed
部分是可选的,您可以只留下DEAFULT (0)
,但我仍然建议您为所有约束提供明确的名称,包括默认值,因为这样会更容易你放弃/重新创建它们。出于同样的原因(为了使您更容易管理约束),在命名约束时使用固定模式会更好。上面语句中的模式(DF
为DEFAULT
,后跟表名,后跟列名)只是一个例子,你很可能会出现另一个例子。但是一旦你拥有,就要保持一致。