在已填充的表上设置一个列,以便不允许将许多行设置为null的空值

Dan*_*ell 1 sql t-sql sql-server null

我有一个表有一个bit类型的活动列,大多数设置为null.活动列作为后想法添加,并错误地设置为允许空值.所以SQL Server不会让我关闭null标志,因为大多数字段已经设置为null.

我尝试将默认值1设置为列,然后删除空标志,但它没有任何.我认为默认值仅适用于插入而不适用于alter.

然后,我尝试使用以下查询显式将所有空值设置为1:

Update cnc.aidPage set active = 1 where active = null
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会影响任何行.我尝试了这个的衍生物,并发现只有当过滤器尝试null时它才会改变任何东西.以下工作如下:

Update cnc.aidPage set active = 1 where active = 0
Update cnc.aidPage set active = null where active = 1
Run Code Online (Sandbox Code Playgroud)

我很感激,如果有人能告诉我为什么过滤器不起作用,如果我检查null或者是否有更简单的方法来完成关闭允许空值.

OMG*_*ies 5

NULL不是值 - 它是一个占位符,表示缺少任何值,因此您无法使用数学运算符来检查它.你需要使用:

UPDATE cnc.aidPage 
   SET active = 1 
 WHERE active IS NULL
Run Code Online (Sandbox Code Playgroud)