2016-11-29 94 views
1

我有一个超过15列的SQL Server表。如何只在SQL Server中更新表列才出现空值?

我的一个专栏名称是verification_Status。目前,我有verification_Status如下下0, 1, 2, null值:

例如:

Id  Name  verification_Status 
1  John  0 
2  Kat  1 
3  Williams Null 
4  Rosy  null 

我想让0空的地方出现。我有4k行更新,所以我有点担心。

update masterTable 
set verification_Status = 0 
where verification_Status == null 

我打算使用上面的查询。

我可以知道这是对我的问题的正确查询吗?有人可以指导我吗?

+0

你几乎there..just使用'那里verification_Status是null' –

+1

4K记录,即使有15列不应该看到的性能损失,如果它是一次性的或计划的作业。现在,如果你每秒钟都这样做,那么我会考虑将默认列属性设置为0,因此如果为NULL,则它在插入时始终为0。 – ioneyed

回答

3

使用此:

update masterTable 
set verification_Status = 0 
where verification_Status is null 

<>是标准的SQL; !=是其T-SQL等效项。两者都评估值,其中NULL不是 - NULL是一个占位符,表示没有值。

这就是为什么你只能使用IS NULL/IS NOT NULL作为这种情况的判断。

这是各种SQL管理平台的标准

是指这样:Null (SQL)

+0

谢谢。我现在更新 –

+0

@NiranjanGodbole,如果它符合您的要求,您可以认为它接受作为您的答案 – Vikrant

+0

是的,但它说等6分钟作出回答标记为 –

3

您的查询应该是

update masterTable set verification_Status=0 where verification_Status is null 

因为NUll=NUll总是False。因此,在verification_status中值为NULL的记录不会更新为零。所以你应该在where子句中使用Verification_status is null

1

的值定期更新:任何表插入

update masterTable set verification_Status=0 where verification_Status is null 

永久默认值:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} 
[WITH VALUES] 
1

检查的行数将更新前的影响。

Select Count(*) from masterTable WHERE ISNULL(verification_Status,'') = '' 

在某些列中,您可能还有空字符串而不是空值。

如果你想更新空值和空值,然后使用它。

UPDATE masterTable SET verification_Status=0 WHERE ISNULL(verification_Status,'') = '' 
+0

它包括其他值也是''(*空白*)和**非空**!并且OP说,*我想在零出现的地方使0。* – Vikrant

+0

在答案中做出了改变 – Munavvar

相关问题