在一个过程中,我有这样的事情:
CASE res IS
WHEN "00" => Y <= A;
WHEN "01" => Y <= A;
WHEN "10" => Y <= B;
WHEN "11" => Y <= C;
WHEN OTHERS => Y <= 'X';
END CASE;
Run Code Online (Sandbox Code Playgroud)
注意这种情况"00"
并"01"
获得相同的值.是否有类似的正确语法
WHEN "00", "01" =>
?
额外注意:除了改变Y之外,还有更多内容,我只是为了简单起见而使用它.所以案例/何时是必要的.
为什么这个int开关有效:
public class Foo {
private final static int ONE = 1;
private final static int TWO = 2;
public static void main(String[] args) {
int value = 1;
switch (value) {
case ONE: break;
case TWO: break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这个枚举开关不是:
import java.lang.annotation.RetentionPolicy;
public class Foo {
private final static RetentionPolicy RT = RetentionPolicy.RUNTIME;
private final static RetentionPolicy SRC = RetentionPolicy.SOURCE;
public static void main(String[] args) {
RetentionPolicy value = RetentionPolicy.RUNTIME;
switch (value) {
case RT: break;
case SRC: …
Run Code Online (Sandbox Code Playgroud) 我几乎可以肯定你不能在case语句的上下文中做到这一点,我也找不到任何关于它的文档,但是可以做到以下几点:
SELECT CASE WHEN testValue > 2
THEN testValue(Without Repeating it) ELSE FailValue)
END
FROM Table
Run Code Online (Sandbox Code Playgroud)
一个更好的更彻底的例子:
Select CASE WHEN (Foo-stuff+bar) > 2
THEN Conditional statement without >2 Else "Fail"
END
FROM TABLE
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来创建一个选择而不重复条件查询.
编辑:由于我的一个不好的例子,我一直在寻找缺乏答案:
testValue = (Table.A / Table.B) * Table.C Table.D
SELECT CASE WHEN testValue > 2
THEN testValue ELSE FailValue)
END
FROM Table
Run Code Online (Sandbox Code Playgroud) 在where子句中使用case是否可行?像这样的东西:
DECLARE @Status VARCHAR(50);
SET @Status='published';
SELECT * FROM Product P
WHERE P.Status IN (CASE WHEN @Status='published' THEN (1,3)
WHEN @Status='standby' THEN (2,5,9,6)
WHEN @Status='deleted' THEN (4,5,8,10)
ELSE (1,3)
END)
Run Code Online (Sandbox Code Playgroud)
此代码提供错误:','附近的语法不正确.
给出以下案例陈述:
1 WHEN r.code= '00' then 'A1'
2 WHEN r.code ='01' AND r.source = 'PXWeb' then 'A2' <
3 WHEN r.code ='0120' then 'A3'
4 WHEN r.code ='01' then 'A4' <
5 WHEN r.code ='1560' then 'A5'
6 WHEN r.code ='1530' then 'A6'
7 WHEN r.code ='1550' then 'A7'
Run Code Online (Sandbox Code Playgroud)
我假设第2行总是在第4行之前执行?然后我读了一些语句,比如' SQL是一种声明性语言,这意味着它告诉SQL引擎要做什么,而不是如何进行
并想知道这是否也与CASE声明中的执行顺序有关.基本上,我可以保留上面的代码,而不必将第4行更改为
4 WHEN r.code ='01' AND r.source != 'PXWeb' then 'A4'
Run Code Online (Sandbox Code Playgroud) 我正在使用这样的东西:
case referer
when (referer.include? "some_string")
redirect_link = edit_product_path
when (referer.include? "some_other_string")
redirect_link = other_product_path
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使字符串some_string
存在于变量中,它也会返回nil referer
.
这是我在Ruby控制台中尝试的内容:
ruby-1.8.7-p334 :006 > jasdeep = "RAILS"
ruby-1.8.7-p334 :026 > case jasdeep
ruby-1.8.7-p334 :027?> when (jasdeep.include? "AI")
ruby-1.8.7-p334 :028?> puts "Hello"
ruby-1.8.7-p334 :029?> end
=> nil
Run Code Online (Sandbox Code Playgroud)
任何输入将不胜感激.
考虑这个课程:
class DateTime(year: Int, month: Int, day: Int)(hour: Int, minute: Int, second: Int)
Run Code Online (Sandbox Code Playgroud)
该unapply
方法将如何,如果我想匹配以下内容:
dt match {
case DateTime(2012, 12, 12)(12, _, _) => // December 12th 2012, 12 o'clock
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
def unapply(dt: DateTime) =
Some((dt.year, dt.month, dt.day),(dt.hour, dt.minute, dt.second))
Run Code Online (Sandbox Code Playgroud)
但这并没有真正起作用.
我正在做一些搜索,用户在下拉菜单中选择一些条款.当他们将一些框留空时,我想查询忽略子句.我知道CASE,我最好的想法是,如果我将0传递给存储过程中的参数,它会忽略该参数,就像这样.
WHERE a.Country = (CASE WHEN @Country > 0 THEN @Country ELSE (something else) END)
Run Code Online (Sandbox Code Playgroud)
所以,(别的东西)应该没有条件,它可以是'> 0',因为国家ID来自所有> 1,但我不知道如何在同一个CASE中使用>和=.
有什么建议?
switch ($var) {
case 0:
// Do something...
break;
case 1:
// Do something...
break;
default:
// Do something...
break;
}
Run Code Online (Sandbox Code Playgroud)
我见过有些人在默认情况下使用break.由于默认情况是触发时执行的最后一种情况,是否需要在那里休息?我猜它只是出于常规做法,还是有另一个原因?
我对SQL很陌生,希望有人可以帮助我.
我有一个存储过程,我想根据列是否包含某个国家/地区来传递不同的值.
到目前为止,我只CASE
在检查具有特定数字或值的匹配时使用,所以我不确定这个.有人可以告诉我以下是否有效和正确或让我知道如何正确地写这个(只是关于括号中的部分)?
(CASE countries
WHEN LIKE '%'+@selCountry+'%' THEN 'national'
ELSE 'regional') AS validity
Run Code Online (Sandbox Code Playgroud)
注意: @selCountry是国家/地区的变量名称,国家/地区可以为空,一个国家或多个国家/地区以逗号和空格分隔.基本上我只想检查国家是否包含@selCountry,如果是,则将有效性设置为"国家".