gpt4 book ai didi

sql - 如何在 SQL Insert 语句中执行三元操作

转载 作者:行者123 更新时间:2023-12-04 15:20:33 25 4
gpt4 key购买 nike

有没有办法通过使用三元操作来执行插入 Postgres 数据库的操作?
我试图不编写 SQL 函数,也不通过代码传递 current_timestamp 值。
试图直接在 SQL 语句本身中实现这一点。这可能吗?
看到了选择查询的示例,其中我可以使用 CASE 和 WHEN,但没有用于插入,而且我没有看到 WHERE 子句适用于此处。
如果可以实现以下建议,请提供建议。谢谢。
对于下面的check_time的值,我想根据同一个查询中状态的值传入current_timestamp或null。

INSERT INTO user(name, age, status, check_time) VALUES (?, ?, ?, current_timestamp);
我想将上述内容修改为以下内容。
这不是有效的 SQL 语句,但试图实现此三元将在状态为 1 时插入 current_timestamp 时执行的操作,否则插入空值。
INSERT INTO user(name, age, status, check_time) VALUES (?, ?, ?, status == 1 ? current_timestamp : null);

最佳答案

您可以使用 CASE再次传递为列传递的值 status 的表达式:

INSERT INTO "user"(name, age, status, check_time) 
VALUES (?, ?, ?, CASE WHEN ? = 1 THEN current_timestamp END);
使用 INSERT ... SELECT 的替代方法您不必通过 status 的地方两次:
INSERT INTO "user"(name, age, status, check_time) 
SELECT t.name, t.age, t.status, CASE WHEN t.status = 1 THEN current_timestamp END
FROM (SELECT ? "name", ? age, ? status) t;

关于sql - 如何在 SQL Insert 语句中执行三元操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63427955/

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