gpt4 book ai didi

mysql - 如果值为空,则将默认值插入非空列

转载 作者:可可西里 更新时间:2023-11-01 06:27:56 25 4
gpt4 key购买 nike

我有一个表 foo,它有一个 NOT NULL 列,默认列名为 message:

CREATE TABLE foo(
id int PRIMARY KEY,
message varchar(64) NOT NULL DEFAULT 'Hello'
)

有一个存储过程bar插入foo:

CREATE PROCEDURE bar(
i_id int,
i_message varchar(64)
)
BEGIN

-- other logic

IF i_message IS NOT NULL THEN
INSERT INTO foo (id, message) VALUES (i_id, i_message);
ELSE
INSERT INTO foo (id, message) VALUES (i_id, DEFAULT);
-- could also be: INSERT INTO foo (id) VALUES (i_id);
END IF;
END;

您可以看到,如果 i_message 为 null,我必须有条件地分支,以便我的插入使用默认值。这对一列没问题,但考虑一下 foo 是否有更多的 NOT NULL DEFAULT 列 - 语法会很笨拙。

是否有一种语法可以用来指定插入的值如果为空则应回退到默认值?我尝试了以下但可以理解的语法错误:

INSERT INTO foo (id, message) VALUES (i_id, COALESCE(i_message, DEFAULT));
INSERT INTO foo (id, message) VALUES (i_id, IFNULL(i_message, DEFAULT));

最佳答案

  INSERT INTO foo (id, message) 
VALUES
(i_id, IFNULL(i_message,DEFAULT(message)));

关于mysql - 如果值为空,则将默认值插入非空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13867593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com