将值设置为该列上具有空值的所有行的现有列

时间:2017-01-03 08:25:29

标签: sql sql-server

如果列的值为null,如何为列更新和设置某个值?

例如: 我在表Products中有10行。我想将所有行的值'0'设置为名为quantity的列,如果该行在该特定列上具有值null

我试过了:

ALTER TABLE Products ADD DEFAULT '0' FOR quantity
WITH VALUES;

...但它没有将null值更新为该列的0

3 个答案:

答案 0 :(得分:1)

添加列时适用WITH VALUES子句,而不是在更改现有列时适用。这解释了为什么行在更改的列中仍然包含NULL。

由于列仍然可以为空(您还没有添加NOT NULL约束),因此空值完全有效(并且DBMS没有理由将这些NULLS更改为默认值)。您当然可以显式更新所有现有的NULL:

update products set quantity = 0 where quantity is null;

但您可以稍后再次添加NULL数量的记录。因此,您可能希望先更新记录,然后更改列,以便完全禁止NULL:

alter table products alter column quantity integer not null;

答案 1 :(得分:1)

Alter Table正在影响新行。

对于现有行,请使用以下代码: -

Update Products set quantity = 0 where quantity IS NULL.

答案 2 :(得分:0)

db.execSQL(CREATE_TABLE_QUERY);