我想从then子句中访问case语句表达式,即
food = "cheese"
case food
when "dip" then "carrot sticks"
when "cheese" then "#{expr} crackers"
else
"mayo"
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,expr将是食物的当前值.在这种情况下,我知道,我可以简单地访问变量食物,但是可能存在值不再可访问的情况(array.shift等..).除了将expr移到局部变量然后访问它之外,还有一种方法可以直接访问案例expr的值吗?
罗亚
ps我知道这个具体的例子很简单,它只是一个例子.
我在使用CASE语句执行查询时遇到问题。根据我的条件(例如,长度),我想执行不同的SQL语句。
有问题的样本查询如下:
select case
when char_length('19480821') = 8
then select count(1) from Patient
when char_length('19480821')=10
then select count(1) from Doctor
end
Run Code Online (Sandbox Code Playgroud)
例外:
[错误]脚本行:1-5 --------------------------
关键字'select'附近的语法不正确。
消息:156,级别:15,状态:2
服务器:sunsrv4z7,行:2
我无法纠正语法。我正在从用户那里获取char_length的字符串作为输入。如何根据特定条件触发查询?CASE是正确的选择吗?还是我必须使用其他任何东西。
我想知道我是否可以在我拥有域名的情况下进行此重定向:example.com是非区分大小写以及IP的语句.两者都是相互独立但不在一起工作的?
RewriteCond %{HTTP_HOST} ^example\.com [OR] [NC]
RewriteCond %{HTTP_HOST} ^123\.45\.67\.89
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
在"Scala编程"一书的第22章中,::类(cons)被定义为
final case class ::[T](hd: T, tl: List[T]) extends List[T] {
//...
}
Run Code Online (Sandbox Code Playgroud)
::类中的方法List定义如下:
def ::[U >: T](x: U): List[U] = new scala.::(x, this)
Run Code Online (Sandbox Code Playgroud)
为什么new需要创建一个实例?这纯粹是为了消除歧义吗?finalcaseclass ::
object Prop {
def simplify(prop : Prop) : Prop = {
prop match {
case Not(Or(a,b)) => simplify(And(Not(a),Not(b)))
case Not(And(a,b)) => simplify(Or(Not(a),Not(b)))
case Not(Not(a)) => simplify(a)
case _ => {
if (simplify(prop) == prop) prop
else prop
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我很确定我的'默认'案例导致了无限循环.我在所有情况下都使用递归.这意味着,但是,只有简化了Prop.一旦道具不能简化,就应该归还整个东西.
我不知道如何测试任何进一步的简化.(我不允许使用其他库,如freenodes #scala频道所示).
有人可以解释它是否是导致循环的"case _",以及如何解决它?如何在不进行循环的情况下测试可能的简化?
提前致谢!
我需要编写一个将返回的case语句
“1 of 3” if someone voted in one of three elections,
“2 of 3” if someone voted in two of three elections,
“3 of 3” if someone voted in three of three elections,
Run Code Online (Sandbox Code Playgroud)
问题是有些值是varchar而有些是null,我无法将它们添加到一起.这是我的想法,但我不能让它工作.
select
id,
CASE
WHEN race1 + race2 + race3 = 0 then '0-3'
WHEN race1 + race2 + race3 = 1 then '1-3'
WHEN race1 + race2 + race3 = 2 then '2-3'
WHEN race1 + race2 + race3 = 3 then '3-3'
WHEN race1 …Run Code Online (Sandbox Code Playgroud) 为什么Java中的Switch语句可以包含一个FINAL变量作为CASE?##
在我检查的JDK7中,无法将值重新分配给最终变量,如下所示.但是,为什么最终变量"x"可以包含在一个案例事件的Switch语句中,而最终变量"x"的值是否无法重新分配?
为什么这样做可以尽管Oracle定义Java编译器将最终变量作为初始化值而不是变量名称?http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.4
请告诉我这是否是Java编译器的技术错误,或者是否存在异常或特殊用途来检查Switch语句中的最终变量的大小写?
class Example{
public static void main(String args[]){
final int x=100;
//x=200; //error: cannot assign a value to final variable x
//The below piece of code compiles
switch(x){
case 200: System.out.println("200");
case 300: System.out.println("300");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我需要在存储过程中按功能排序.将值发布到Web服务,并根据该值,我必须以某种方式对结果进行排序,即
当ColName按ColName发布时ColName2按ColName2发布订单时
我正在研究使用Case但我收到一个错误:
Incorrect syntax near '@version'
ORDER BY CASE
WHEN @OrderBy ='Seller (code)' THEN A_SNO
WHEN @OrderBy ='Lot' THEN A_LOTNO
WHEN @OrderBy ='Ring Type' THEN RN_NUM
WHEN @OrderBy ='Aim Error Code' THEN AimRejectionCode
ELSE A_SNO END
DECLARE @version varchar(50)
SET @version = (SELECT DBVERSION FROM MSYSCFG)
PRINT 'New Version = ' + @version
Run Code Online (Sandbox Code Playgroud)
对不起,我是新手,并使用sql server 2008.任何帮助赞赏UPDATE:提供额外的代码.当我遗漏最后3行时,我得到一个错误
Incorrect synatx near END
Run Code Online (Sandbox Code Playgroud)
更新2:我已将ORDER BY更改为以下内容:
ORDER BY
CASE @OrderBy
WHEN @OrderBy = 'Seller (code)' THEN A_SNO
WHEN @OrderBy = 'Lot' THEN A_LOTNO …Run Code Online (Sandbox Code Playgroud) 我是Java的初学者,并且在此方面进行了一些完善。它应该是一个简单的计算器。我知道可能有更好/更有效的方法来执行此操作,但这不是我想要的。使用a switch选择要运行的操作时,我遇到了一个小问题。基本上,发生的事情是,每次我运行代码时,它都会选择要运行的正确代码(如果String输入的是“ +”,它将添加doubles),之后似乎总是运行该default代码(显示“ Command”)未识别。”)。如果我删除default代码完美运行(当然,这样,如果用户输入未知命令,它将给出一个错误),我可以轻松做到这一点,但是我真正想要的是拥有默认代码并知道为什么不这样做的方法不是这样的 请帮忙。谢谢。
import java.util.Scanner;
public class App {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
double v1 = scan.nextDouble();
double v2;
double v3;
scan.nextLine();
while(1<2){
String op = scan.nextLine();
switch(op){
case "+":
v2 = scan.nextDouble();
v1 = v2 + v1;
System.out.println("="+v1);
break;
case "-":
v2 = scan.nextDouble();
v1 = v2 - v1;
System.out.println("="+v1);
break;
case "*":
v2 = scan.nextDouble();
v1 = v2 * v1;
System.out.println("="+v1); …Run Code Online (Sandbox Code Playgroud) 我找到了几个类似的线程,但没有一个正在工作.我正在尝试为另一列满足某个条件时创建一个新列.
这是我正在使用的代码:
SELECT DISTINCT R.[Column1] AS Person,
SUM(CASE WHEN R.[Event] = 'Event1' THEN 1 ELSE NULL END) AS Event1,
CASE (WHEN L.[Column2] LIKE '%String1%' THEN 'String1'
ELSE WHEN L.[Column2] LIKE '%String2%' THEN 'String2'
ELSE WHEN L.[Column2] LIKE '%String3%' THEN 'String3'
ELSE NULL END) AS NewColumn
FROM [Database1].[dbo].[Table1] R
LEFT JOIN
[Database1].[dbo].[Table2] L
ON R.[UniqueIdentifier] = L.[UniqueIdentifier]
WHERE L.[Column2] LIKE '%String1%'
OR L.[Column2] LIKE '%String2%'
OR L.[Column2] LIKE '%String3%'
GROUP BY R.[Column1], L.[Column2]
ORDER BY R.[Event1] DESC
Run Code Online (Sandbox Code Playgroud)
如果我从第2列中取出CASE语句,那么查询工作正常.我想要的结果是三列:Person,String,Event ...用Person和String上的聚合计数事件.
错误是:消息156,级别15,状态1,行3关键字'CASE'附近的语法不正确.