值MSSQL中填充栏位空值的方法

什么是填充空值

在MSSQL中,有时候我们需要对某些栏位进行填充,这些栏位可能在数据录入过程中没有填写值,或者在查询时返回空值。对这些空值进行填充能够使数据更加完整,便于后续的数据处理和分析。

使用COALESCE函数填充空值

COALESCE函数可以接受多个参数,返回第一个不为空的值。我们可以使用COALESCE函数来填充空值。

语法

COALESCE (expression1, expression2, ...)

其中,expression1, expression2, ...表示要进行判断的表达式,可以是栏位名、常量或者子查询。

示例

假设我们有一张订单表,其中包含订单号(order_id)、下单日期(order_date)和完成日期(finish_date),其中完成日期可能为空值。

CREATE TABLE orders (

order_id INT PRIMARY KEY,

order_date DATE NOT NULL,

finish_date DATE

);

INSERT INTO orders (order_id, order_date, finish_date)

VALUES (1, '2021-01-01', '2021-01-10'),

(2, '2021-01-02', NULL),

(3, '2021-01-03', '2021-01-12'),

(4, '2021-01-04', NULL),

(5, '2021-01-05', NULL),

(6, '2021-01-06', '2021-01-13');

现在我们需要查询订单完成日期(finish_date),并将其为空值的记录填充为下单日期(order_date)+14天。

SELECT order_id,

order_date,

COALESCE(finish_date, DATEADD(day, 14, order_date)) AS finish_date

FROM orders;

该查询结果如下:

order_id order_date finish_date

1 2021-01-01 2021-01-10

2 2021-01-02 2021-01-16

3 2021-01-03 2021-01-12

4 2021-01-04 2021-01-18

5 2021-01-05 2021-01-19

6 2021-01-06 2021-01-13

可以看到,空值被成功填充为订单日期+14天。

使用CASE语句填充空值

除了COALESCE函数外,我们还可以使用CASE语句来进行空值填充。

语法

CASE

WHEN expression1 THEN result1

WHEN expression2 THEN result2

...

ELSE default_result

END

其中,expression1, expression2, ...表示要进行判断的表达式,可以是栏位名、常量或者子查询。result1, result2, ...表示expression1, expression2, ...分别满足条件时的返回值。default_result表示所有expression都不满足时的默认返回值。

示例

以下是使用CASE语句进行空值填充的示例:

SELECT order_id,

order_date,

CASE

WHEN finish_date IS NULL THEN

DATEADD(day, 14, order_date)

ELSE

finish_date

END AS finish_date

FROM orders;

该查询结果与COALESCE函数示例中的结果相同。

使用UPDATE语句进行空值填充

除了在查询时填充空值,我们还可以使用UPDATE语句对空值进行填充。

语法

UPDATE table_name

SET column_name = new_value

WHERE condition

其中,table_name表示要更新的表的名称;column_name表示要更新的栏位名;new_value表示新的值;condition表示更新条件。

示例

以下是使用UPDATE语句进行空值填充的示例:

UPDATE orders

SET finish_date = DATEADD(day, 14, order_date)

WHERE finish_date IS NULL;

执行该语句后,订单表的空值已经被成功填充。

在INSERT INTO语句中填充空值

除了在查询时和更新时进行空值填充外,我们还可以在INSERT INTO语句中对空值进行填充。

语法

INSERT INTO table_name (column1, column2, ..., columnn)

VALUES (value1, value2, ..., valuen)

其中,table_name表示要插入数据的表名;column1, column2, ..., columnn表示要插入的栏位名;value1, value2, ..., valuen表示要插入的值。

示例

以下是在INSERT INTO语句中对空值进行填充的示例:

INSERT INTO orders (order_id, order_date, finish_date)

VALUES (7, '2021-01-07', COALESCE(finish_date, DATEADD(day, 14, order_date)));

在该示例中,我们在插入一条新记录时对finish_date进行了空值填充。如果原先的finish_date为空值,则使用订单日期+14天来进行填充。

结论

在MSSQL中,我们可以使用COALESCE函数、CASE语句、UPDATE语句和INSERT INTO语句来对空值进行填充。根据不同的需求,我们可以选择不同的方式来进行空值填充。

数据库标签