标签: case

处理MySQL CASE语句中的空集

MySQL服务器版本5.0.45.考虑以下:

( SELECT CASE 
    WHEN t.group_id = 12 THEN 'yes' 
    ELSE 'no' 
    END
    FROM sample_table t
    WHERE t.user_id = 2
    AND t.group_id = 12 ) as foo
Run Code Online (Sandbox Code Playgroud)

这个较大语句的子查询符合我的预期,大部分时间都会产生"是"或"否"字符串值.这不是理想的,但这就是你在别人的代码上工作所得到的!

但是,有时select可以合法地返回一个空集,在这种情况下foo设置为NULL.这实际上并没有破坏应用程序,但它令人恼火.有没有办法可以保证foo总是'yes'或'no',即使表中没有匹配的行?

mysql null case

5
推荐指数
1
解决办法
6476
查看次数

如果..Else或Case在WHERE子句中 - 不同的东西

我在这里阅读了大量的问答,但没有一个符合我想要实现的目标.我甚至不知道这是否可能!任何帮助/建议将不胜感激.

我正在尝试构建一个WHERE基于的条件子句

CustID (int) = @CustomerID 
Run Code Online (Sandbox Code Playgroud)

如果@CustomerID = 0那时我想要结果WHERE CustID > 0(即返回所有客户),否则我只想要某些客户CustID = @CustomerID

这可能吗?

sql conditional if-statement case where

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

存储过程中的Firebird CASE语句

我试图case在存储过程中使用该语句,但我得到了"Token unknown".case存储过程不支持?谢谢

sql firebird stored-procedures case flow-control

5
推荐指数
2
解决办法
6489
查看次数

是否无法在Case Statement的条件下检查列表项?

我正在尝试检查项目列表是否包含Oracle 10g中case语句的条件部分中的特定数字.我收到了ORA-00936: missing expression错误.我正在尝试做类似以下的事情:

Select case 'some_column_data' 
when in (1,2,3) then 'do_something' 
else 'do_something_else' end; 
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法完成我打算做的事情,或者在不同的when语句中迭代地检查值是否在列表中是唯一的解决方案?

oracle case

5
推荐指数
1
解决办法
7359
查看次数

为什么Java中的Switch语句可以包含一个FINAL变量作为CASE?

为什么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)

java variables final case switch-statement

5
推荐指数
2
解决办法
1715
查看次数

MySQL CASE那么空案例值

    SELECT CASE WHEN age IS NULL THEN 'Unspecified' 
                WHEN age < 18 THEN '<18' 
                WHEN age >= 18 AND age <= 24 THEN '18-24' 
                WHEN age >= 25 AND age <= 30 THEN '25-30' 
                WHEN age >= 31 AND age <= 40 THEN '31-40' 
                WHEN age > 40 THEN '>40' 
            END AS ageband, 
            COUNT(*) 
       FROM (SELECT age 
               FROM table) t 
   GROUP BY ageband
Run Code Online (Sandbox Code Playgroud)

这是我的查询.这些是结果: 在此输入图像描述

但是,如果table.age在一个类别中没有至少1个年龄,那么它将在结果中忽略该情况.像这样: 在此输入图像描述

这个数据集没有任何年龄<18岁的记录.所以ageband"<18"没有显示出来.我怎样才能使它显示并返回值0 ??

mysql sql case

5
推荐指数
1
解决办法
3707
查看次数

SQL SERVER中的ORDER BY和CASE

我需要在存储过程中按功能排序.将值发布到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)

sql sql-server case sql-order-by

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

更新案例何时,具有多个条件

我有这张桌子:

CREATE TABLE IF NOT EXISTS `my_table` (
  `A` int(11) NOT NULL,
  `B` int(11) NOT NULL,
  `C` varchar(50) NOT NULL,
  `D` varchar(30) NOT NULL,
  PRIMARY KEY (`A`,`B`,`C`)
)
Run Code Online (Sandbox Code Playgroud)

我想在一个查询中更新几个条目.我试过这个:

UPDATE my_table
SET D = CASE
    WHEN (A = 6 AND B = 1 AND C = 'red') THEN '1#2#3#5#4'
    WHEN (A = 8 AND B = 1 AND C = 'green') THEN '5#6#7#8#9'
END
Run Code Online (Sandbox Code Playgroud)

但是此查询会更新表中的所有条目.它完全更新了我想要更新的两个条目的'D'的值,但它也删除了其他条目的"D"值,我希望它们保留其先前的值.

mysql sql case sql-update

5
推荐指数
1
解决办法
8648
查看次数

Erlang:嵌套案例

我对Erlang很新.我试图找出列表索引是否超出范围(在尝试之前)所以我想用类似的东西做一个if子句

if lists:flatlength(A) < DestinationIndex ....
Run Code Online (Sandbox Code Playgroud)

我发现那些功能结果不能用于防护,所以我使用了case.这导致嵌套的case语句

case Destination < 1 of
    true -> {ok,NumberOfJumps+1};
    false ->
    case lists:flatlength(A) < Destination of
        true -> 
            doSomething;
        false ->
            case lists:member(Destination,VisitedIndices) of
                true -> doSomething;
                false -> 
                    doSomethingElse
            end
    end
end.
Run Code Online (Sandbox Code Playgroud)

我发现这在可读性和代码风格方面很糟糕.这是你如何在erlang中做这样的事情,还是有更优雅的方式来做到这一点?

提前致谢

erlang if-statement case

5
推荐指数
1
解决办法
2385
查看次数

使用CASE在UPDATE语句IN SQL SERVER中为SET选择列

我想执行以下语句.是否可以使用CASE选择要更新的列?

UPDATE TABVAR CASE 
WHEN M BETWEEN 0 AND 6 THEN SET M0_TO_6 = M
WHEN M BETWEEN 7 AND 18 THEN SET M7_TO_18 = M
WHEN M BETWEEN 19 AND 54 THEN SET M19_TO_54 = M
WHEN M > 54 THEN SET MABOVE54 = M
END
Run Code Online (Sandbox Code Playgroud)

sql sql-server case sql-update

5
推荐指数
2
解决办法
6862
查看次数