【问题标题】:How to insert an alternative value from an old table into a new table IF NULL.如何将旧表中的替代值插入新表 IF NULL。
【发布时间】:2015-07-16 22:36:33
【问题描述】:

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

【问题讨论】:

  • 已经有人问过类似的问题了,this 可能有帮助!

标签: sql insert-update ifnull


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 什么 SQL 语言不支持ISNULL?我只是好奇,因为我只使用 MS SQL。
    • 甲骨文,只是举一个大的。还有其他几个。
    猜你喜欢
    • 2016-06-10
    • 2019-12-02
    • 2014-01-28
    • 2021-06-09
    • 2014-04-25
    • 2015-09-16
    • 2021-10-23
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多