如何将旧 table 的替代值插入新 table IF NULL。

How to insert an alternative value from an old table into a new table IF NULL.

我有这个old_table。

ID:    First_name:    Last_name:    Age:
1      Christian      Johnson       25
2      John           Christiansen  21
3      <NULL>         Peterson      23

和这个 new_table 我刚刚通过这段代码创建的:

CREATE TABLE new_table (ID integer, name text, age text);

INSERT INTO new_table (ID, name, age) SELECT ID, First_name, age FROM old_table;

返回:

ID    Name:        Age:
1     Christian    25
2     John         21
3     <NULL>       23

但我希望我的代码在遇到 NULL 值时插入姓氏。所以在伪代码中;

(...) SELECT ID, First_name IF NULL last_name, age FROM old_table;

IF NULL last_name 不起作用。

您正在寻找 COALESCE(),returns 它遇到的第一个非空值:

INSERT INTO new_table (ID, name, age) 
    SELECT ID, COALESCE(First_name, Last_name), age FROM old_table;

查询:
INSERT INTO new_table (ID, name, age) SELECT ID, COALESCE(First_name,Last_name), age FROM old_table;

COALESCE 将遍历列出的值并选择第一个不是 NULL 它比 ISNULLIVNL 等更可移植的代码