基于结果Postgresql的案例声明

时间:2018-06-27 12:26:34

标签: postgresql postgresql-9.3

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

(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

我的结果在状态字段中给我错误,因此很明显我在做错事... 而且我知道案例陈述有两种类型,所以我使用推荐的一种吗?

1 个答案:

答案 0 :(得分:3)

您在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的右侧带有不带通配符的字符串,应该是一个简单的比较。