有没有办法在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.
我已经发现了函数式编程错误,所以自然对我来说已经不够了.;)
所以,在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)
第二种形式是无效的,因为案例评估了最后执行的命令的退出代码,这完全不是我正在寻找的.
有没有简单的黑客实现什么,我正在找?
如果我使用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) 所以我有这个非常难看的代码:
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?
我试图创建一个具有倍数的存储过程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) 我有一个有几列的表.一列的值是0或1.我想编写一个查询,如果值为0,则返回"Hello",如果是,则返回"Bye" 1.编写此查询的适当方法是什么?
任何人都可以帮我在Informatica PowerCenter Designer中编写案例陈述吗?我是Informatica的新手,基于我有限的经验,我觉得不支持案例陈述.有一个具有类似功能的解码功能,但我无法在语法上找到任何好的例子.
如果有人能给我一些关于如何在Informatica中使用case语句/解码函数的具体例子,我将非常感激.
非常感谢您的帮助!
我想在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)
...然后它会编译.
可以将以下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)
它是否正确?
这听起来很奇怪,但我很乐意这样做:
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语句只评估第一个真正的条件块,有没有办法覆盖它来评估每个块都是真的,除非有中断?
case-statement ×10
haskell ×2
if-statement ×2
sql-server ×2
bash ×1
branch ×1
c++ ×1
comparison ×1
conditional ×1
decode ×1
delphi ×1
hash ×1
informatica ×1
mysql ×1
nested-if ×1
notation ×1
ruby ×1
select ×1
sql ×1
string ×1
syntax ×1
templates ×1