我试图在 WHERE 子句中搜索 CaseStatement。但我没有发现与我的场景相似。
下面是我在 WHERE 子句中使用 CASE 语句的 SQL 语句。如果PartName = B,那么我应该应用 ( RecoveraleFlag = 1 ) 条件以及其他条件。其他 此条件不适用,但所有其他条件应保持不变。
FROM Rec.Communications A
INNER JOIN REC.CommunicationTypes B ON A.CommunicationTypeKey = B.CommunicationTypeKey
INNER JOIN occ.Cases c ON a.CaseId = c.CaseId
INNER JOIN occ.Claims cl on a.CaseId = cl.CaseId
INNER JOIN ops.Concepts d ON c.ConceptKey = d.ConceptKey
INNER JOIN OPS.Regions f ON d.MODSRegionKey = f.MODSRegionKey
INNER JOIN COM.RepriceRequestOccurrences e ON a.CommunicationId = e.CommunicationId
INNER JOIN occ.Providers prv ON c.MODSProviderKey = …Run Code Online (Sandbox Code Playgroud) 我正在尝试解析字符串表达式(即"6 + 10*2-5")并使用for-case语句将答案计算为double.但是我收到错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at Calculator.random(Calculator.java:50)
at Calculator.main(Calculator.java:210)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
public static double random(String exp) {
double primeResult = 0;
for (int i=0; i<exp.length();i++) {
double left = Integer.parseInt(exp.substring(0,i));
double right = Integer.parseInt(exp.substring(i+1,i+2));
switch(exp.charAt(i)) {
case '*':
primeResult = left * right;
break;
case '/':
primeResult = left / right;
break;
case '+':
primeResult = left + right;
break;
case '-':
primeResult = left - right;
break; …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
switch(month){
case 1:
System.out.print("January");
break;
case 2:
System.out.print("February");
break;
case 3:
System.out.print("March");
break;
case 4:
System.out.print("April");
break;
case 5:
System.out.print("May");
break;
case 6:
System.out.print("June");
break;
case 7:
System.out.print("July");
break;
case 8:
System.out.print("August");
break;
case 9:
System.out.print("September");
break;
case 10:
System.out.print("October");
break;
case 11:
System.out.print("November");
break;
case 12:
System.out.print("December");
break;
}
Run Code Online (Sandbox Code Playgroud)
好的,所以这个代码100%完美地工作...对于int月.我有另一个int(avgMonth)只能保持相同的值(1-12),我想只有相同的输出(月份).如何在不必复制整个交换机和案例的情况下将avgMonth添加到此代码中?我尝试使用逗号(月,avgMonth)和&&(月&& avgMonth)以及+'s(月+ avgMonth),但无济于事.
在 MySQL 中,是否可以CASE在SELECT子句中有两个语句,其中第二个CASE语句依赖于第一个CASE语句?
例如,考虑以下查询:
SELECT CASE WHEN `user`.`id` < 500 THEN 'awesome' ELSE 'lame' END
AS `status`
, CASE WHEN `status` = 'awesome' THEN 'You rock' ELSE 'You stink' END
AS `message`
FROM `user`
Run Code Online (Sandbox Code Playgroud)
基本上,用户 ID 决定状态,然后状态决定消息。
但是,正如您可能已经猜到的,此查询会生成以下错误:
Unknown column 'status'
Run Code Online (Sandbox Code Playgroud)
到目前为止我发现的唯一解决方案是两个生成一个临时表、视图或子查询,然后message由status这个子查询中返回的确定。
有没有办法在不使用临时表、视图或子查询的情况下编写此查询?如果可能的话,我试图避免这些构造以保持查询简单和优化。谢谢!
我还是VHDL的新手.我需要在CASE语句中为多个信号赋值,如下所示:
CASE input24 IS
WHEN "00" THEN
output0 <= '1' ;
output1 <= '0' ;
output2 <= '0' ;
output3 <= '0' ;
WHEN "01" THEN
output0 <= '0' ;
output1 <= '1' ;
output2 <= '0' ;
output3 <= '0' ;
WHEN "10" THEN
output0 <= '0' ;
output1 <= '0' ;
output2 <= '1' ;
output3 <= '0' ;
WHEN "11" THEN
output0 <= '0' ;
output1 <= '0' ;
output2 <= '0' ;
output3 <= '1' ; …Run Code Online (Sandbox Code Playgroud) 我使用了始终为true的语句,例如1 = 1在MYSQL中使用where语句的case语句,语法如下:
select * from tablename where
(case when tablefield is not null then
then tablefield = 'value'
else 1 = 1 end)
Run Code Online (Sandbox Code Playgroud)
我想知道如何1 = 1在where子句中的sqlserver/tsql case语句中使用else (always true statement).
我正在尝试用case语句编写查询.我在将case语句输出为多个变量时遇到问题.基本上我想取1列,然后将第一部分作为outputcolumn1"FIRST",将最后4个字符作为outputcolumn2"LAST"
我尝试做一些研究,但我没有找到任何解决我的味道...我知道我忽略了一些非常愚蠢的东西.
Select *
Case When a.col_1 is NULL
-- Grab all but last 4 as "FIRST"
Then LEFT(b.col_1, len(b.col_1) -4
-- Grab Last 4 as "LAST"
AND RIGHT(b.col_1, 4)
Else LEFT(a.col_1, len(a.col_1) -4
AND RIGHT(a.col_1, 4)
end as FIRST,LAST
From Table_1 as a
inner join Table_2 as b on a.TableID = b.TableID
Run Code Online (Sandbox Code Playgroud) 我需要一个CASE语句来返回一个字符串列表但我有一些语法问题.生成的SQL应该是这样的:
SELECT * FROM FRUIT WHERE COLOR IN ('RED', 'YELLOW')
Run Code Online (Sandbox Code Playgroud)
我正在尝试做什么(这不起作用):
SELECT * FROM FRUIT WHERE COLOR IN
CASE
WHEN TYPE = *something*
THEN ('RED', 'YELLOW')
ELSE ('GREEN')
END
Run Code Online (Sandbox Code Playgroud)
这有效:
SELECT * FROM FRUIT WHERE COLOR IN
CASE
WHEN TYPE = 1
THEN 'RED'
ELSE 'GREEN'
END
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
ORA-00907 missing right parenthesis
Run Code Online (Sandbox Code Playgroud)
当我使用多个COLOR ='X'或COLOR ='Y'时,它可以工作,但我想知道是否有一种方法只能使用一个CASE语句.提前致谢.
"Guards vs. If-Then-Else"帮助了一点,但我仍然想知道这是否可以以某种方式起作用.我需要获取一个列表并返回列表中的每个其他元素.对于偶数长度列表,我得到它只是如果长度(xs)mod2 == 1开始是有问题所以我想打破列表情况的初始长度,如下所示:
everyOther:: [Int] -> [Int]
everyOther [] = []
everyOther (x:xs) = case length (xs) 'mod' 2 of 0 ->
if (length (xs) `mod` 2 == 0)
then x:everyOther (take 1 xs)
else x:everyOther (drop 1 xs)
1 -> if (length (xs) `mod` 2 == 1)
then x:everyOther (take 1 xs)
else x:everyOther (drop 1 xs)
Run Code Online (Sandbox Code Playgroud)
它告诉我"if"可能存在"间距错误",但这在功能上是正确的.我可以这样做吗?
在case语句中使用它时,我遇到了substring函数的问题.
select
case when -1<0 then 'ok' else SUBSTRING('abcd',1,-1) end
Run Code Online (Sandbox Code Playgroud)
给我一个问题:传递给substring函数的长度参数无效.
自第一个条件满足以来,为什么案件会"看"其他条件?
另一方面查询:
declare @a int;
set @a=-1
select
@a,
case when @a<0 then 'ok' else SUBSTRING('abcd',1,@a) end
Run Code Online (Sandbox Code Playgroud)
提出正确答案'确定'没有任何错误.
case ×10
sql ×3
sql-server ×3
java ×2
mysql ×2
t-sql ×2
assign ×1
for-loop ×1
haskell ×1
if-statement ×1
oracle ×1
subquery ×1
temp-tables ×1
vhdl ×1
view ×1