我有这样的数据库,我想通过在emp_name字段中检入性别列和覆盖来覆盖该字段。
emp_id | emp_name | gender
-------+----------+--------
501 | aaa | M
502 | bbb | F
503 | ccc | F
504 | ddd | M
505 | eee | F
我想要这样的输出
emp_id | emp_name | gender
-------+----------+--------
501 | Mr.aaa | M
502 | Ms.bbb | F
503 | Ms.ccc | F
504 | Mr.ddd | M
505 | Ms.eee | F
我曾尝试像这样的选择查询
$select overlay(emp_name placing 'Mr.' from 1 for 0 ) from emp where gender = 'M' ;
我得到了这个输出,
overlay
---------
Mr. aaa
Mr. ddd
(2 rows)
但是,我没有得到预期的结果。是否有任何预期结果的方法。
先谢谢
答案 0 :(得分:4)
下面的查询应该给出您期望的输出:
SELECT emp_id
, CASE WHEN gender = 'M' THEN 'Mr. '
WHEN gender = 'F' THEN 'Ms. '
ELSE '' END || emp_name as emp_name
, gender
FROM emp;
答案 1 :(得分:2)
$select overlay(emp_name placing CASE gender WHEN 'M' THEN 'Mr. ' ELSE 'Ms. ' END from 1 for 0 ) from emp;
不是postgresql的人,但这应该有用。
答案 2 :(得分:1)
我严格来说是一个TSQL人,但试试这个:
Select CASE WHEN gender = 'M' THEN overlay(emp_name placing 'Mr.' from 1 for 0)
WHEN gender = 'F' THEN overlay(emp_name placing 'Mrs.' from 1 for 0)
END AS emp_name
from emp