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

时间:2015-05-06 16:40:44

标签: sql insert-update ifnull

我有这个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值,我会喜欢我的代码插入lastname。所以在伪代码中;

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

IF NULL last_name不起作用。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

COALESCE将浏览列出的值并选择第一个不是NULL的值ISNULLIVNL等可移植代码。