1

我有这个 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 不起作用。

4

2 回答 2

2

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

INSERT INTO new_table (ID, name, age) 
    SELECT ID, COALESCE(First_name, Last_name), age FROM old_table;
于 2015-05-06T16:45:48.720 回答
1

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

COALESCE将遍历列出的值并选择第一个不是NULL It's moreportable code than ISNULLorIVNL等​​的值。

于 2015-05-06T16:46:14.740 回答