假设我有下表(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”。 因此,我查询中“名称”的结果应为:“丹”“山猫”“安妮”“拉里猫”。
这可能吗?
答案 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'