基于结果的case语句 Postgresql

Case statement based on the result Postgresql

您好,我有一个关于案例陈述的问题,以及为什么某些陈述不起作用。

(Case WHEN LENGTH(input)<=5 THEN text LIKE '%'
  ELSE text = input)

当我这样做时,它没有工作,我仍然对为什么感到困惑。 然而,这个问题的解决方案是

(Case WHEN LENGTH(input)<=5 THEN text LIKE Concat('%',input,'%')
  ELSE text = input END)

但是我的主要问题在下面,虽然我想回答上面的问题,因为它们是相同的,所以我将把它作为一个问题。

我有一个学生还在审核入学,但是这所学校是德国的,所以我需要为他们翻译几个词,因为系统是英文的

select s.fname, s.lastname, 
(Case when s.status like 'APPROVED' then s.status = 'Genehmigt'
when s.status like 'PENDING' then s.status = 'Anstehend.'
end) as Status
from Student

我的结果在状态字段中给了我 False 所以显然我做错了什么...... 我知道有两种类型的 case 语句,所以我使用推荐的一种吗?

您在then之后的表达:

s.status = 'Genehmigt'

不是一个赋值,它是一个布尔表达式,所以它产生 truefalses.status = 只是多余的。

select 
    fname, 
    lastname, 
    case when status = 'APPROVED' then 'Genehmigt'
    when status = 'PENDING' then 'Anstehend.'
    end as status
from student

注意like右边有一个没有通配符的字符串应该是简单的比较