【问题标题】:Case statement with an ignoring condition postgres 9.3带有忽略条件postgres 9.3的case语句
【发布时间】:2018-12-07 05:43:42
【问题描述】:

在我的应用程序中,以下缩写允许我输入一个值并在应用程序中选择其类型,例如

:input 

在这种情况下,我创建了一个变量

:Lang1 as a varchar

我有以下代码,只是使用 case 语句询问数组中有多少人使用特定语言

我想知道有多少学生从数组中知道一种语言,并检查输入字段是否有值

(Case When Length(:Lang1)>4    --I'm assuming any language has more than 4 letters
then languages[1] = :Lang1     --When this condition statement is true then I get the children 
                   --and the number of children speaking the entered language as a 1st language
else (ignore condition) end)   --Simply trying to ignore the else side of the condition

我试过这段代码

(Case When Length(:Lang1)>4 then languages[1] = :Language 
else cast(:Lang1 as varchar(20)) end)

错误:CASE 类型的字符变化和布尔值无法匹配

还有这段代码

(Case When Length(:Lang1)>4 then languages[1] = :Language 
end)

产生了一堆 0 0 0s

这篇文章与其前任有关 Part 2: how to get the Sum of a partition based query without actually pivoting 并放置在以下区域

JOIN schoollevel sl ON sl.id = p.schoollevelid
GROUP BY s.studentnumber, p.firstname
 ) t
Where (Case When Length(:Lang1)>4 then languages[1] = :Lang1
    else cast(:Lang1 as varchar(20)) end)
)
select *

【问题讨论】:

  • 您是在编写 SQL 查询还是 PL/pgSQL 函数。您发布的所有代码都有很多语法问题,我不明白您想要什么。您能否发布更多代码,以便了解您想要什么?
  • @LaurenzAlbe 第 2 部分:如何在不实际旋转 stackoverflow.com/questions/50605639/… 的情况下获取基于分区的查询的总和

标签: sql postgresql select case postgresql-9.3


【解决方案1】:

case 表达式返回一个值,而不是可以用作条件的语法片段。您可以改为使用 or 逻辑运算符来创建此逻辑:

WHERE LENGTH(:Lang1) <= 4 OR languages[1] = :Lang1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2016-02-09
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多