如何在PostgreSQL中以不同的方式使用overlay()?

Kal*_*dhi 2 sql postgresql

我有这样的数据库,我想通过检查性别列和覆盖 emp_name 字段来覆盖该字段。

emp_id | emp_name | gender 
-------+----------+--------
   501 | aaa      | M
   502 | bbb      | F
   503 | ccc      | F
   504 | ddd      | M
   505 | eee      | F
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出

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
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的选择查询

$select overlay(emp_name placing 'Mr.' from 1 for 0 )  from emp where gender = 'M' ;
Run Code Online (Sandbox Code Playgroud)

我得到的这个输出,

 overlay 
---------
 Mr. aaa
 Mr. ddd
(2 rows)
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到预期的结果。有什么办法可以达到预期的结果吗?

提前致谢

Dav*_*ray 5

下面的查询应该给出您期望的输出:

SELECT emp_id
     , CASE WHEN gender = 'M' THEN 'Mr. '
            WHEN gender = 'F' THEN 'Ms. '
            ELSE '' END || emp_name as emp_name
     , gender
  FROM emp;
Run Code Online (Sandbox Code Playgroud)