标签: case

Haskell案例中的范围检查?

是否有一种在Haskell中执行以下操作的有效方法:

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    3..99 -> doDefault
Run Code Online (Sandbox Code Playgroud)

除了拥有97行"doDefault"之外?

haskell case

6
推荐指数
2
解决办法
4050
查看次数

Clojure范围宏

作者R. Kent Dybvig在第86页的"The Scheme Programming Language,4th Edition"一书中,作者define-syntax为一个case接受其条件范围的语句编写了一个(Scheme宏).我以为我会在Clojure中尝试这个.

这是结果.

我怎样才能改善这个?我用:ii,:ie,:ei,和:ee用于运营商的范围,分别表示包含性的包容性,包容独占的,独占的包,以及异排他性的,.有更好的选择吗?

我选择扩展到一个cond而不是离散的if陈述,因为我觉得我将从cond宏的任何未来改进中获益.

(defmacro range-case [target & cases]
  "Compare the target against a set of ranges or constant values and return
   the first one that matches. If none match, and there exists a case with the
   value :else, return that target. Each range consists of a vector containing
   3 terms: a lower bound, …
Run Code Online (Sandbox Code Playgroud)

macros case clojure

6
推荐指数
1
解决办法
761
查看次数

Ruby:Case使用对象

有没有办法隐式调用case语句的对象上的方法?IE:

class Foo

  def bar
    1
  end

  def baz
    ...
  end

end
Run Code Online (Sandbox Code Playgroud)

我希望能做的就是这样......

foo = Foo.new
case foo
when .bar==1 then "something"
when .bar==2 then "something else"
when .baz==3 then "another thing"
end
Run Code Online (Sandbox Code Playgroud)

...其中"when"语句正在评估case对象上方法的返回.这样的结构有可能吗?如果是这样的话,我一直无法弄清楚语法......

ruby case object

6
推荐指数
3
解决办法
2387
查看次数

switch case 不带变量

是否可以编写 switch case 代码而无需在 switch 中指定变量?假设我有两个变量 int x 和 int y。我想根据 x 和 y 的不同组合有条件地运行代码。例如

switch
{
    case (x==1 && y==1): //do something.
        break;
    case (x==3 && y==-1): //do something.
        break;
    case (x==0 && y==3): //do something.
        break;
    default: //do something.
        break;
}
Run Code Online (Sandbox Code Playgroud)

这段代码给我错误。

java case switch-statement

6
推荐指数
1
解决办法
5906
查看次数

SQL Server选择Distinct并使用CASE排序

我已经看过很多关于这个场景的问题/论坛帖子,但是我要么不理解解决方案,要么提供的解决方案对于那个特定问题太具体了,我不知道如何将它应用到我的情况中.我有以下查询:

SELECT DISTINCT d.*
FROM Data d
JOIN Customers c 
ON c.Customer_Name = d.Customer_Name
AND c.subMarket = d.subMarket
JOIN Sort s 
ON s.Market = c.Market
ORDER BY d.Customer_Name, d.Category, d.Tab, d.SubMarket,
CASE s.sortBy
WHEN 'Comp_Rank'
THEN d.Comp_Rank
WHEN 'Market_Rank'
THEN d.Market_Rank
ELSE d.Other_Rank
END
Run Code Online (Sandbox Code Playgroud)

我在MySQL数据库上使用了那个确切的查询,它运行得很好.我们最近切换到SQL Server数据库,现在它不起作用,我收到错误:

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Run Code Online (Sandbox Code Playgroud)

我已经尝试将s.*添加到SELECT中(因为s.sortBy在CASE中)并且没有改变任何东西我也尝试列出Data中的每个字段并在SELECT中排序并且导致相同的精确错误.

数据中实际上没有重复,但是当我进行连接时,每个项目会产生4个完全重复的行,我不知道如何修复它,这就是我最初添加DISTINCT的原因.我尝试了LEFT JOIN,INNER JOIN等等的各种变化......并且无法获得不同的结果.无论如何,任何一个问题的解决方案都可以,但我假设需要更多信息才能找出JOIN重复问题.

编辑:我刚刚意识到我错误地输入了ORDER BY中的一些字段(例如,n.Category,n.Tab应该是d.Category,d.Tab).ORDER BY中的所有内容都来自我选择的数据表*.正如我所说,我也尝试列出SELECT中的每个字段,但没有帮助.

sql case distinct sql-order-by

6
推荐指数
1
解决办法
5694
查看次数

SQL 中使用 CASE 语句时不等于

在postgresql中,我有一个case声明,我需要添加一个“不等于”子句。

v1等于 v2 时,我希望它说 1,当v1 不等于 v2时,我想说 2。

create table test (
v1      varchar(20),
v2      varchar(20)
);

insert into test values ('Albert','Al'),('Ben','Ben')

select case v1
when v2 then 1
    else 3
end 
from test
Run Code Online (Sandbox Code Playgroud)

我尝试使用!=or <>,但这似乎不起作用。

有谁知道如何在caseSQL 语句中使用不等于吗?

sql postgresql case

6
推荐指数
1
解决办法
3万
查看次数

带有条件 CASE 语句的 SQL LEFT JOIN

希望这是一个快速

SELECT *
FROM T
left JOIN J ON 
  CASE
    WHEN condition1 THEN 1 --prefer this option even if CASE2 has a value
    WHEN condition2 THEN 2
    ELSE 0
  END = 1 (edit: but if 1 does not satisfy, then join on 2)
Run Code Online (Sandbox Code Playgroud)

两种情况都返回结果,但我希望 THEN 1 取代 THEN 2 并成为查找优先级

我可以让 SQL 做一些类似 join on 的事情max(CASE)吗?

基本上我试图从 Excel 复制嵌套的 INDEX/MATCH

编辑:我听到的是,案例应该在第一个返回的 TRUE 处停止,但是当我测试时它不会表现得那样

SELECT *
FROM T
left JOIN J ON 
  CASE
    WHEN condition1 THEN 1 --prefer this …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server join case

6
推荐指数
1
解决办法
2万
查看次数

如何在scala案例类中使用特殊字符

我正在使用下面的 JSON,

{
  "@context": "Testingcontext",
  "@type": "Testingtype",
  "actor": "Testingactor"
}
Run Code Online (Sandbox Code Playgroud)

我正在 scala 中创建一个案例类:

case class LoggedInAction(`@context`: String,`@type`:String,actor:String) 
Run Code Online (Sandbox Code Playgroud)

如何在案例类中使用特殊字符@,例如 , ?&另外,如何使用此类案例类字段?

scala class case

6
推荐指数
1
解决办法
1506
查看次数

PostgreSQL 使用 CASE 语句进行慢 JOIN

在我的数据库中,我有一个包含约 3500 条记录的表,作为更复杂查询的一部分,我尝试使用“CASE”条件对其自身执行内部联接,如下所示。

SELECT *
FROM some_table AS t1
JOIN some_table AS t2 ON t1.type = t2.type
    AND CASE
       WHEN t1.type = 'ab' THEN t1.first = t2.first
       WHEN t1.type = 'cd' THEN t1.second = t2.second
       -- Column type contains only one of 2 possible varchar values
    END;
Run Code Online (Sandbox Code Playgroud)

问题是此查询执行 3.2 - 4.5 秒,而下一个请求将在 40 - 50 毫秒内执行。

SELECT *
FROM some_table AS t1
JOIN some_table AS t2 ON t1.type = t2.type
    AND (t1.first = t2.first OR t1.second = t2.second)
Run Code Online (Sandbox Code Playgroud)

另外,根据第一种情况的执行计划,数据库处理约 580 …

sql postgresql join case postgresql-performance

6
推荐指数
1
解决办法
2万
查看次数

关于Oracle中多个条件的案例陈述

CASE test
WHEN  NULL and  SUBSTR(('99999999' - Tst_Date),1,4) > 2009 THEN 'Medi'                     
WHEN   NULL and SUBSTR(('99999999' - Tst_Date),1,4) < 2009 THEN 'hills'
ELSE test
END AS "Phy"
Run Code Online (Sandbox Code Playgroud)

我在上述案例陈述中遗漏了什么吗?我一直在收到00905. 00000 - "缺少关键字"错误?

sql oracle case

6
推荐指数
1
解决办法
3万
查看次数