SQL:根据布尔值更改SELECT的结果

时间:2018-08-06 13:06:32

标签: sql string

假设我有下表(PostgreSQL):

name(string) |value(boolean)
----------------------------
Dan          |false
Bob          |true
Anne         |false
Larry        |true

现在我要检索所有名称:

SELECT name as myName, value as myValue FROM table

但是,只要“ value”为“ true”,我就想在名称后附加“ cat”。 因此,我查询中“名称”的结果应为:“丹”“山猫”“安妮”“拉里猫”。

这可能吗?

3 个答案:

答案 0 :(得分:4)

使用CASE表达式:

SELECT
    CASE WHEN value = 'true' THEN CONCAT(name, 'cat') ELSE name END AS name,
    value
FROM yourTable;

我假设您正在使用MySQL,该MySQL使用CONCAT函数进行字符串连接。

答案 1 :(得分:2)

您将使用case表达式:

select (case when value = 'true' then name || 'cat' else name end) as name,
       value
from t;

答案 2 :(得分:1)

explain所有建议的查询以查找最有效的

SELECT CONCAT(name, 'cat') AS name, value FROM t WHERE value = 'true'
UNION ALL
SELECT name, value FROM t WHERE value = 'false'