作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法通过使用三元操作来执行插入 Postgres 数据库的操作?
我试图不编写 SQL 函数,也不通过代码传递 current_timestamp 值。
试图直接在 SQL 语句本身中实现这一点。这可能吗?
看到了选择查询的示例,其中我可以使用 CASE 和 WHEN,但没有用于插入,而且我没有看到 WHERE 子句适用于此处。
如果可以实现以下建议,请提供建议。谢谢。
对于下面的check_time的值,我想根据同一个查询中状态的值传入current_timestamp或null。
INSERT INTO user(name, age, status, check_time) VALUES (?, ?, ?, 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/
我是一名优秀的程序员,十分优秀!