标签: case-statement

SQL Case语句可以通过吗?

有没有办法在SQL中使CASE语句像C#中的case语句一样?我不想做的是下面的例子,但如果那是我唯一的选择,我想我会选择它.

例:

@NewValue =
   CASE
      WHEN @MyValue = '1' THEN CAST(@MyValue AS int)
      WHEN @MyValue = '2' THEN CAST(@MyValue AS int)
      ELSE NULL
   END
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在使用SQL Server.

sql-server case-statement

11
推荐指数
2
解决办法
6241
查看次数

bash case语句评估为字符串

我已经发现了函数式编程错误,所以自然对我来说已经不够了.;)

所以,在bash中可以写:

case $status in
  "foo") status="bar" ;;
  "baz") status="buh" ;;
   *) status=$status ;;
esac
Run Code Online (Sandbox Code Playgroud)

但我害怕拼写错误,所以我更愿意写:

status=case $status in
  "foo") "bar" ;;
  "baz") "buh" ;;
  *) $status ;;
esac
Run Code Online (Sandbox Code Playgroud)

第二种形式是无效的,因为案例评估了最后执行的命令的退出代码,这完全不是我正在寻找的.

有没有简单的黑客实现什么,我正在找?

bash functional-programming notation case-statement

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

Haskell中case语句中的模式匹配变量

如果我使用case语句将字符串文字与字符串文字进行比较,我会得到预期的行为:如果它们是相同的 - 它匹配,如果它们不匹配 - 它不匹配.

但是,如果我将字符串文字与作为字符串的常量进行比较,则会得到"模式匹配重叠"警告,并且具有常量的分支始终匹配.

这是一个示例会话:

Prelude> let var1 = "abc"
Prelude> let var2 = "def"
Prelude> case var1 of { var2 -> "Fail"; _ -> "Win" }

<interactive>:1:0:
    Warning: Pattern match(es) are overlapped
             In a case alternative: _ -> ...
"Fail"
Prelude> case "abc" of { var2 -> "Fail"; _ -> "Win" }

<interactive>:1:0:
    Warning: Pattern match(es) are overlapped
             In a case alternative: _ -> ...
"Fail"
Prelude> case "abc" of { "def" -> "Fail"; _ -> "Win" …
Run Code Online (Sandbox Code Playgroud)

string comparison haskell case-statement

11
推荐指数
3
解决办法
6340
查看次数

有什么像一个模板化的案例声明

所以我有这个非常难看的代码:

template <typename T>
std::conditional_t<sizeof(T) == sizeof(char),
                   char,
                   conditional_t<sizeof(T) == sizeof(short),
                                 short,
                                 conditional_t<sizeof(T) == sizeof(long),
                                               long,
                                               enable_if_t<sizeof(T) == sizeof(long long),
                                                           long long>>>> foo(T bar){return reinterpret_cast<decltype(foo(bar))>(bar);}
Run Code Online (Sandbox Code Playgroud)

我正在使用嵌套的conditional_ts来创建一个case语句.有什么东西可以更优雅地完成这个或者我需要做出我自己的模板化案例陈述吗?

注意:我实际上意识到这种用法reinterpret_cast很糟糕:为什么不为同尺寸类型之间的强制转换重新解释强制copy_n?

c++ conditional templates case-statement nested-if

11
推荐指数
2
解决办法
1001
查看次数

在存储过程中找不到CASE语句的Mysql CASE

我试图创建一个具有倍数的存储过程CASE STATEMENTS我有以下存储过程:

BEGIN
CASE @olds
WHEN 'emp' THEN
    CASE @news
    WHEN 'loc' THEN
        UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE id=@eqloc;
        UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE id=@eqvis;
        UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
        UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
    WHEN 'vis' THEN
        UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE id=@eqvis;
        UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE id=@eqloc;
        UPDATE partidos SET `eqgan`=@news WHERE id=@mst;
        UPDATE log_partidos SET `status`=@news WHERE `match`=@mst;
    END CASE;
WHEN 'loc' THEN
    CASE @news
    WHEN 'emp' THEN
        UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE id=@eqloc; …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures case-statement

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

SQL Server中的条件值替换

我有一个有几列的表.一列的值是01.我想编写一个查询,如果值为0,则返回"Hello",如果是,则返回"Bye" 1.编写此查询的适当方法是什么?

sql sql-server select if-statement case-statement

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

Informatica中的案例陈述/解码功能

任何人都可以帮我在Informatica PowerCenter Designer中编写案例陈述吗?我是Informatica的新手,基于我有限的经验,我觉得不支持案例陈述.有一个具有类似功能的解码功能,但我无法在语法上找到任何好的例子.

如果有人能给我一些关于如何在Informatica中使用case语句/解码函数的具体例子,我将非常感激.

非常感谢您的帮助!

decode case-statement informatica informatica-powercenter

10
推荐指数
1
解决办法
7万
查看次数

Haskell:单函数中的多个案例陈述

我想在Haskell函数中包含多个case语句(请参阅下面的假设函数示例).

但是,它不合法Haskell.有什么更好的方法来完成同样的事情?此外,如果case语句没有返回任何内容,只是设置了一些值,为什么在函数中有多个case语句是不合法的?

(我会在第5行得到"输入`case'的解析错误")

tester x y =  
   case (x < 0) of  
       True -> "less than zero."  
       False -> "greater than or equal to zero."  
   case (y == "foo")  
       True -> "the name is foo."  
       False -> "the name is not foo." 
Run Code Online (Sandbox Code Playgroud)

请注意,如果我的功能只是:

tester x y =  
   case (x < 0) of  
       True -> "less than zero."  
       False -> "greater than or equal to zero."
Run Code Online (Sandbox Code Playgroud)

...然后它会编译.

haskell case-statement

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

如何使用"case"语句而不是"if"语句测试值是否在范围内?

可以将以下if语句转换为case语句吗?

if (Number >= 5) and (Number <= 10) then
  lblAnswer.Caption := 'in range'
else
  lblAnswer.Caption := 'out of range';
Run Code Online (Sandbox Code Playgroud)

我的答案 :

是的,它可以

case (number >= 5) and (Number <= 10) of
  lblAnswer.Caption := 'in range';
  lblAnswer.Caption := 'out of range';
end;
Run Code Online (Sandbox Code Playgroud)

它是否正确?

delphi syntax if-statement case-statement

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

哈希上的Ruby case语句?

这听起来很奇怪,但我很乐意这样做:

case cool_hash
  when cool_hash[:target] == "bullseye" then do_something_awesome
  when cool_hash[:target] == "2 pointer" then do_something_less_awesome
  when cool_hash[:crazy_option] == true then unleash_the_crazy_stuff
  else raise "Hell"
end
Run Code Online (Sandbox Code Playgroud)

理想情况下,我甚至不需要再次引用has,因为它就是case语句的内容.如果我只想使用一个选项,那么我会"case cool_hash [:that_option]",但我想使用任意数量的选项.另外,我知道Ruby中的case语句只评估第一个真正的条件块,有没有办法覆盖它来评估每个块都是真的,除非有中断?

ruby hash branch case-statement

8
推荐指数
4
解决办法
4999
查看次数