mysql - Postgres 中的 IF-ELSE

标签 mysql sql postgresql if-statement select

我无法将专为 MySQL 设计的 SQL 查询转换为 Postgres 语法。这是查询:

select if(sendonly = true, 'REJECT', 'OK') AS access from accounts where username = '%u' and domain = '%d' and enabled = true LIMIT 1;

Postgres 中没有这个漂亮的小函数“if()”。我第一次尝试使用一些 CASE 子句失败了。需要修改什么才能使该查询在 Postgres 中运行?

最佳答案

正如您所指出的,您可以使用 case 表达式:

SELECT CASE WHEN sendonly = true THEN 'REJECT' ELSE 'OK' END AS access
FROM   accounts
WHERE  username = '%u' AND domain = '%d' AND enabled = true
LIMIT  1;

或者,由于 Postgres 可以直接计算 bool 值,您可以稍微缩减此查询:

SELECT CASE WHEN sendonly THEN 'REJECT' ELSE 'OK' END AS access
FROM   accounts
WHERE  username = '%u' AND domain = '%d' AND enabled
LIMIT  1;

关于mysql - Postgres 中的 IF-ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37778575/

相关文章:

SQL Server : SELECT from multiple lines if values exist

json - 从 JSON 对象中检索数据

mysql - 查询 View 时列名改变大小写

mysql - 从 phpMyAdmin 转储中删除 DELIMITER

MySQL Join 需要显示 LEFT 表中的所有记录

sql - 连接到全新安装的 SQL Server

postgresql - 使用 LAG() 函数选择最后一天的价格

sql - 如何让事件用户通过 SQL 连接到 postgreSQL 数据库?

MySQL 表别名仅导致联合中的第一个别名

Java Mysql查询结果集错误