基于结果的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'
不是一个赋值,它是一个布尔表达式,所以它产生 true
或 false
。
s.status =
只是多余的。
select
fname,
lastname,
case when status = 'APPROVED' then 'Genehmigt'
when status = 'PENDING' then 'Anstehend.'
end as status
from student
注意like
右边有一个没有通配符的字符串应该是简单的比较
您好,我有一个关于案例陈述的问题,以及为什么某些陈述不起作用。
(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'
不是一个赋值,它是一个布尔表达式,所以它产生 true
或 false
。
s.status =
只是多余的。
select
fname,
lastname,
case when status = 'APPROVED' then 'Genehmigt'
when status = 'PENDING' then 'Anstehend.'
end as status
from student
注意like
右边有一个没有通配符的字符串应该是简单的比较