嗨,所以我有一个关于案例陈述以及为什么某些陈述不起作用的问题。
(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
我的结果在状态字段中给我错误,因此很明显我在做错事... 而且我知道案例陈述有两种类型,所以我使用推荐的一种吗?
答案 0 :(得分:3)
您在then
之后放置的表达式:
s.status = 'Genehmigt'
不是赋值,它是一个布尔表达式,因此它产生true
或false
。
s.status =
只是多余的。
select
fname,
lastname,
case when status = 'APPROVED' then 'Genehmigt'
when status = 'PENDING' then 'Anstehend.'
end as status
from student
请注意,like
的右侧带有不带通配符的字符串,应该是一个简单的比较。