postgresql - 基于结果 Postgresql 的 case 语句
问题描述
嗨,我有一个关于案例陈述以及为什么某些陈述不起作用的问题。
(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 所以显然我做错了什么......而且我知道有两种类型的案例陈述,所以我使用推荐的一种吗?
解决方案
您放在后面的表达式then
:
s.status = 'Genehmigt'
不是赋值,它是一个布尔表达式,所以它产生true
or false
。
s.status =
只是多余的。
select
fname,
lastname,
case when status = 'APPROVED' then 'Genehmigt'
when status = 'PENDING' then 'Anstehend.'
end as status
from student
请注意,like
右侧没有通配符的字符串应该是一个简单的比较。
推荐阅读
- android - body 标签中的样式不会影响 Android WebView
- python - python:在第一个条件变为假后运行第二个条件
- pip - 在 Colab 中使用 URL 和要求安装 Pip
- javascript - 设置 jquery cookie 一年
- powerapps - Microsoft Power Apps - 获取其他用户的日历
- c - SDL2 彩色纹理仅呈现为白色
- python - 这是列表中元素之间的求和问题。为什么会出现“无”?
- c# - 以下控件已成功添加到工具箱,但未在活动设计器中启用
- javascript - 如何删除 addEventListeners 和 requestAnimationFrames?
- javascript - 多个图像已上传但未在 UI 中显示(React Js)