我有一个表,有几个可空的整数列。出于几个原因,这是不可取的,因此我希望将所有空值更新为0,然后将这些列设置为NOT NULL。除了将null更改为0之外,还必须保留数据。
我正在寻找特定的SQL语法来更改列(称为ColumnA)为“非空”。假设数据已更新为不包含空值。
使用SQL server 2000。
我有一个表,有几个可空的整数列。出于几个原因,这是不可取的,因此我希望将所有空值更新为0,然后将这些列设置为NOT NULL。除了将null更改为0之外,还必须保留数据。
我正在寻找特定的SQL语法来更改列(称为ColumnA)为“非空”。假设数据已更新为不包含空值。
使用SQL server 2000。
当前回答
你需要分两步完成:
更新表,使列中没有空值。
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
更改表以更改列的属性
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
其他回答
这看起来更简单,但只适用于Oracle:
ALTER TABLE [Table]
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
此外,您还可以使用它添加列,而不仅仅是更改它。 如果默认值为空,则更新为本例中的默认值(0)。
你需要分两步完成:
更新表,使列中没有空值。
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
更改表以更改列的属性
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
让我们举个例子:
TABLE NAME=EMPLOYEE
我想将EMPLOYEE_NAME列更改为NOT NULL。此查询可用于以下任务:
ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;
这招对我很管用:
ALTER TABLE [Table]
Alter COLUMN [Column] VARCHAR(50) not null;
首先,确保您更改为not的列没有空值 从列_name为空的表中选择count(*) 输入缺失的值。你可以用空字符串、0、平均值、中值或插值值替换空值。这取决于你的后填充策略或前填充策略。 决定列值是唯一的还是非唯一的。如果它们需要是唯一的,那么就添加一个唯一的约束。否则,查看性能是否足够,或者是否需要添加索引。