标签: case-statement

如何在CASE语句中分配多个值?

我需要根据 CASE 语句为我的选择分配两个值。伪:

select
    userid
  , case
        when name in ('A', 'B') then 'Apple'
        when name in ('C', 'D') then 'Pear'
    end as snack
from
    table
;
Run Code Online (Sandbox Code Playgroud)

我正在为 分配一个值snack。但假设我还想drink根据相同的条件为另一个变量分配一个值。一种方法是重复上述内容:

select
    userid
  , case
        when name in ('A', 'B') then 'Apple'
        when name in ('C', 'D') then 'Pear'
    end as snack
  , case
        when name in ('A', 'B') then 'Milk'
        when name in ('C', 'D') then 'Cola'
    end as drink
from
    table
;
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须根据相同的条件分配更多值,例如、food、等,则此代码将变得难以维护。drink …

sql sql-server case-statement

5
推荐指数
2
解决办法
3万
查看次数

为什么我不能将枚举用于 switch-case-语句?

我想将枚举常量用于 switch-case-语句。

我正在使用以下枚举/类:

public enum Cons {

  ONE(1), 
  TWO(2);

  private final int val;

  private Cons(final int newVal) {
    val = newVal;
  }

  public int getVal() {
    return val;
  }
}



public class Main {

  public static void main(String[] args) {

    int test;

    // some code

    switch(test) {
        case Cons.ONE.getVal():
            // ...
            break;
        case Cons.TWO.getVal(): 
            // ...
            break;
        default:
            // ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题: “case 表达式必须是常量表达式” => 我的枚举的值不是常量,尽管该属性private final int val声明为final.

我如何使用这个枚举来进行案例陈述?

java enums case-statement switch-statement

5
推荐指数
1
解决办法
3815
查看次数

Ruby - case语句的隐含对象

在Ruby中,有没有办法获取case语句的隐含对象?

case 2+2
when '2'
  puts '2'
else
  puts "#{some_object}"
end
Run Code Online (Sandbox Code Playgroud)

其中'some_object'将是由case评估的任何语句的返回值

ruby case-statement

4
推荐指数
1
解决办法
238
查看次数

如何在case语句中引用val?

我早上很慢.我认为在case语句中引用现有的val会没问题.但它似乎被解释为局部变量定义.一个基本的谷歌搜索没有帮助,我没有我的楼梯书.

在下面,什么是允许我匹配案例(b,c)的语法?

scala> val (a,b,c) = (1,2,3)
a: Int = 1
b: Int = 2
c: Int = 3

scala> (2,3) match {
     | case (a,b) => 100
     | case (b,c) => 200
     | case _ => 999
     | }
<console>:8: error: unreachable code
       case (b,c) => 200
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching case-statement

4
推荐指数
1
解决办法
202
查看次数

mysql切换案例

我有一个像下面的查询结构,我想知道是否有办法将选择查询写为一个使用CASE语句或通过其他方式,以便值根据其值插入适当的变量.

DECLARE passes INT;
DECLARE fails INT;
..

SELECT count(score)
INTO passes
  FROM scores
 WHERE score >= 40;

SELECT count(score)
INTO fails
  FROM scores
 WHERE score < 40;
Run Code Online (Sandbox Code Playgroud)

默多克想出了一个解决这个问题的简洁方法,我只需对其进行一次修改就可以将每个值放入各自的变量中

SELECT * 
INTO   passes, fails 
FROM  (SELECT SUM(CASE 
                    WHEN score >= 40 THEN 1 
                    ELSE 0 
                  END) AS _passes, 
              SUM(CASE 
                    WHEN score < 40 THEN 1 
                    ELSE 0 
                  END) AS _fails 
       FROM   scores) AS x; 
Run Code Online (Sandbox Code Playgroud)

mysql sql case-statement

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

EF左边连接两个属性的表和case语句

我正在尝试为数据库编写一个查询,该数据库将表连接到查找表,结果将根据case语句返回.

在普通的SQL中,查询看起来像这样:

SELECT chis_id, chis_detail, cilt.mhcatID, cilt.mhtID, 'TheFileName' =
CASE  
    WHEN cilt.mhcatID IS NOT NULL AND cilt.mhtID IS NOT NULL THEN chis_linked_filename
    END
FROM chis
    LEFT JOIN cilt on cilt.mhcatID = chis.mhcat_id AND cilt.mhtID = chis.mht_id 
WHERE cch_id = 50
Run Code Online (Sandbox Code Playgroud)

chis是被查询的表,cilt是一个查找表,并且不包含任何与chis的外键关系(chis分别由mhtID和mhcatID存在于mht和mhcat表中的FK).

该查询将用于返回记录的历史更新列表.如果与cilt查找表的连接成功,则意味着查询的调用者将有权查看历史更新的任何关联文件的文件名.

虽然在我的研究过程中我发现了各种关于如何在Linq中实现案例陈述和左联接到实体查询的帖子,但我还是没有能够找到如何加入两个不同的领域.这可能吗?

linq-to-entities entity-framework left-join case-statement entity-framework-4

4
推荐指数
1
解决办法
4562
查看次数

哈斯克尔 - 也许算术

我被要求实现一个使用以下配置文件的函数:

maybe_divide :: Maybe Integer -> Maybe Integer -> Maybe Integer
Run Code Online (Sandbox Code Playgroud)

并以下列方式回应:

> maybe_divide (Just 5) (Just 2) 
Just 2
> maybe_divide (Just (-5)) (Just 2) 
Just (-3)
> maybe_divide (Just (-5)) (Just 0) 
Nothing
> maybe_divide Nothing (Just 1) 
Nothing
> maybe_divide (Just 1) Nothing
Nothing
Run Code Online (Sandbox Code Playgroud)

我写了以下但它不会编译.你们有什么建议吗?

maybe_divide :: Maybe Integer -> Maybe Integer -> Maybe Integer
maybe_divide x y = case x of
    Just x' -> case y of 
        Just y'
            | y' == 0 -> Nothing  
            | …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming case-statement maybe

4
推荐指数
3
解决办法
2270
查看次数

在 where 子句中使用 case 语句

您好,由于我的代码错误,我丢失了一些东西。

select * from ##ScheduleDetail SD
left join ##HolidayFilterTbl HF on SD.Scheduledate = HF.Testdate

where (ScheduleDate = testdate)
and
(Case 
 when HF.IsHoliday = 1 then (overtime = 1 and makeup = 0)
 else
(overtime = 0 and Makeup = 0)
end
)
and
DOW = 5 
order by ActivityStartTime
Run Code Online (Sandbox Code Playgroud)

我尝试了几种组合,但每种组合都在第一个等号或第二个等号处出错。我缺少什么?

sql select case-statement where-clause

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

处理 switch 语句中的组合情况和重复情况

是否可以合并cases共享作业并重复case未共享的作业,还是最好将每个作业分开?


用一个简单的例子来说明..case 0并且180两者都包含w = 330,因此它们已合并;每个分配的值x都不同,因此它们会重复进行x分配。

switch(window.orientation) {
    case   0:
    case 180:
        w = 330;
        //break
    case   0:
        x = '-180px';
        //break
    case -90:
    case  90:
        w = 480;
        x = '0';
        break;
    case 180:
        x = '-80px';
        break;
}
Run Code Online (Sandbox Code Playgroud)

javascript optimization case-statement switch-statement

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

更新 case 语句中的多个变量

我已经环顾了一段时间,所以如果我使用了不正确的术语,请原谅我......

代码的目标是如果输入为 0,则更新 Aout1 和 Aout0,输出对应于 7 段显示,但我收到以下错误:

“错误 (10170):FourBitAdder.v(55) 文本附近的 Verilog HDL 语法错误:“,”;期待“;”。检查并修复紧邻指定关键字之前或之后出现的任何语法错误。”

下面是给我带来问题的代码片段......

always @*
case (A)
4'b0000 : Aout1 = 7'b1000000, Aout0 = 7'b1000000; //00
Run Code Online (Sandbox Code Playgroud)

我尝试将代码更改为以下内容,虽然我的软件没有出现任何错误,但我的硬件(7 段显示器)无法像我尝试仅更改每种情况下的一个变量时那样工作。

always @*
case (A)
4'b0000 : Aout1 = 7'b1000000; 4'b0000 : Aout0 = 7'b1000000; //00
Run Code Online (Sandbox Code Playgroud)

先感谢您 :)

verilog case case-statement conditional-statements

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