标签: case

Sql Server,其中大小写为空,否则不为空

我有一个程序接收一个名为的变量@FL_FINALIZADA.

如果它为null或false,我想限制我的select只显示包含空DT_FINALIZACAO值的行.否则,我想显示包含非空DT_FINALIZACAO值的行.

像这样的东西:

SELECT 
    * 
FROM 
    MyTable 
WHERE 
    ...
    AND
    (
        OPE.DT_FINALIZACAO = (
            CASE
                WHEN (@FL_FINALIZADA <> 1)
                    THEN NULL
                END
        ) OR 
        OPE.DT_FINALIZACAO IS NOT NULL
    )
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我收到消息:

CASE规范中的结果表达式都不 是NULL.

我怎样才能做到这一点?

提前致谢.

sql sql-server stored-procedures case

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

创建不可变实例并以惯用方式修改副本

我想根据该实例外部的信息有条件地创建对象实例的副本.副本中的大多数信息将与原始信息相同,但某些信息需要更改.这些信息是在actor之间传递的,所以我需要对象是不可变的,以避免奇怪的并发相关行为.以下玩具代码是我想要帮助的一个简单示例.

如果我有以下代码:

case class Container(condition:String,amount:Int,ID:Long)
Run Code Online (Sandbox Code Playgroud)

我可以做以下事情:

    val a = new Container("Hello",10,1234567890)
    println("a = " + a)
    val b = a.copy(amount = -5)
    println("b = " + b)
    println("amount in b is " + b.amount)
Run Code Online (Sandbox Code Playgroud)

而输出是

a = Container(Hello,10,1234567890)
b = Container(Hello,-5,1234567890)
amount in b is -5
Run Code Online (Sandbox Code Playgroud)

我还可以有条件地创建对象的副本,执行以下操作:

import scala.Math._
val max = 3     
val c = if(abs(b.amount) >= max) b.copy(amount = max,condition="Goodbye") else if(abs(b.amount) < max) b.copy(amount = abs(b.amount))
println("c = " + c)
Run Code Online (Sandbox Code Playgroud)

如果我将b对象中的数量设置为-5,则输出为

c = Container(Goodbye,3,1234567890)
Run Code Online (Sandbox Code Playgroud)

如果我将b对象中的数量设置为-2,则输出为

c …
Run Code Online (Sandbox Code Playgroud)

scala copy class case immutability

0
推荐指数
1
解决办法
249
查看次数

这不会突破if语句吗?

所以基本上给出了以下代码.

何时action = 2;mode = 1i被设置为2?

我正在研究同事代码,它是这样编写的,但我认为中断只会跳过if并继续其余部分case 2.所以基本上if语句是没有意义的.

switch(action){

   case 1: i = 1; break;

   case 2: if(mode == 1)
           {
              break;
           }

           i = 2;
           break;

   case 3: i = 3; break;
Run Code Online (Sandbox Code Playgroud)

我把它重写为:

 case 2: if(mode != 1)
            i = 2;
         break;
Run Code Online (Sandbox Code Playgroud)

但它不是唯一的地方,有些更复杂.如果我要重构它,我需要一些我正确的信息.

java if-statement case break

0
推荐指数
1
解决办法
879
查看次数

如何在mssql 2008中的case语句中使用子查询

如果使用带有子查询的select case语句将else语句改为单个查询,我需要更改以下过程...

 if((select COUNT(*) from pseb.dbo.meterattributedetails where meterid=@meterid)=0)
  select @emf=EMF from pseb.dbo.METERMASTER where MeterID=@meterid
  else  if((select COUNT(*) from pseb.dbo.meterattributedetails where meterid=@meterid and dateadd(day,1,@fromdate)<DateTime)>0) 
    select top 1 @emf=oldvalue from pseb.dbo.meterattributedetails  where MeterID=@meterid and dateadd(day,1,@fromdate)<datetime order by DateTime 
     else 
  select top 1 @emf=newvalue from pseb.dbo.meterattributedetails  where meterid=@meterid and DateTime<@fromdate order by DateTime desc
Run Code Online (Sandbox Code Playgroud)

meterattribute表结构如下:

AttributeID AttributeName   Oldvalue    newvalue    DateTime    meterid
1           EMF         2.00000         4.00000        2012-07-05   4756
1           EMF         4.00000         6.00000        2012-07-10   4756
1           EMF         6.00000         8.00000        2012-07-15   4756
1           EMF         8.00000        10.00000 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server case subquery sql-server-2008

0
推荐指数
1
解决办法
4万
查看次数

在where子句中使用select语句.得到一个错误ORA-00905

我的示例代码.

在where语句中的case语句中,当我等于变量时,我得到以下错误:

ORA-00905缺少关键字

我不明白我哪里出错了.

我甚至尝试将完整的case语句等同于变量,它没有提供所需的输出.

谁能帮我?

SELECT JOB_NAME,
       HOURS,
       COMMITTEE,
       REPORT,
       DIRECTOR,
       (CASE
         WHEN L.ACTION IN ('110', '10') AND
              L.APPROVED = 'Y' AND
              (:LV_ACTN = '1' OR :LV_ACTN = '4') THEN
          L.APPRV_JUSTIFY
         WHEN L.ACTION IN ('20', '130') AND
              L.FLAG = 'R' AND (:LV_ACTN = '2' OR :LV_ACTN = '4') THEN
          L.CANCL_JUSTIFY
         WHEN L.ACTION IN ('30', '120') AND
              L.APPROVED = 'Y' AND
              (:LV_ACTN = '3' OR :LV_ACTN = '4') THEN
          L.POSTPONE_JUSTIFY
         ELSE 
          'NO ACTION' 
       END) AS EXPLANATION,
       L.ID,
       MANAGER,
       l.year
  FROM …
Run Code Online (Sandbox Code Playgroud)

sql case

0
推荐指数
1
解决办法
671
查看次数

带有"where in"子句的case语句

我有一个场景,我需要在where子句中使用多个值,如果传递给查询的参数是99999,否则我只使用param本身.我使用"IN"作为where子句的一部分,但我得到以下错误"关键字'CASE'附近的语法不正确".任何一个提供替代不正确的查询,将获得我需要的结果?

DECLARE @IPD_NEWS_TYPE_PARAM decimal (18,0)
 SET @IPD_NEWS_TYPE_PARAM = 99999

SELECT 
    n.id,
    n.headline,
    n.news_type_id
FROM news n
WHERE n.news_type_id IN
CASE WHEN @IPD_NEWS_TYPE_PARAM = 99999 THEN (1,2,3,4,5)
ELSE
(@IPD_NEWS_TYPE_PARAM)
END
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server case where

0
推荐指数
1
解决办法
384
查看次数

CASE语句等同于if或else-if

在这个sql CASE语句中:

CASE WHEN col1 = 'X' then 'A'  
CASE when col2 = 'Y' then 'B'  
else 'C' as result ...
Run Code Online (Sandbox Code Playgroud)

如果col1 = X,col2 = Y,输出是'A'还是'B'?即CASE语句是if还是else-if?

sql case netezza

0
推荐指数
1
解决办法
1453
查看次数

递减时"删除"时出现语法错误

我在案例"删除"时遇到语法错误.我一直试图解决它,但我无法弄明白.谁能告诉我如何解决它?谢谢

该代码适用于在线商店购物车

switch($action)
{
    case "add":
    if (isset($_SESSION['cart'][$id]))
        $_SESSION['cart'][$id]++;
    else
        $_SESSION['cart'][$id]=1;
break;

case "remove":
    if (isset($_SESSION['cart'][$id]))
    (
        $_SESSION['cart'][$id]--; (ERROR HERE)
        if ($_SESSION['cart'][$id]==0)
            unset($_SESSION['cart'][$id]);
    )
break;

case "empty":
    unset($_SESSION['cart']);
break;

}
Run Code Online (Sandbox Code Playgroud)

php case

0
推荐指数
1
解决办法
42
查看次数

如果情况如何编写多个然后情况作为单个案例

好的标题很难让我表达,所以可以编辑

我的问题是我可以用更短的方式写下面的查询

在所有情况下,何时相同

SQL server 2014

这里是查询

    update
   tblCrawlUrls 
set
   cl_LastCrawlDate = case 
      when Len(@cl_CrawlSource) > 2 then SYSUTCDATETIME() 
      else cl_LastCrawlDate  
   end ,
   cl_TotalCrawlTimes = case 
      when Len(@cl_CrawlSource) > 2 then @cl_TotalCrawlTimes 
      else cl_TotalCrawlTimes  
   end ,
   cl_Ignored_By_Containing_Word = case 
      when Len(@cl_CrawlSource) > 2 then @cl_Ignored_By_Containing_Word 
      else cl_Ignored_By_Containing_Word  
   end ,
   cl_PageProcessed = case 
      when Len(@cl_CrawlSource) > 2 then 0 
      else cl_PageProcessed 
   end ,
   cl_CertainlyNotProductPage = case 
      when Len(@cl_CrawlSource) > 2 then @cl_CertainlyNotProductPage 
      else cl_CertainlyNotProductPage 
   end ,
   cl_CrawlSource = case 
      when Len(@cl_CrawlSource) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server case sql-server-2014

0
推荐指数
1
解决办法
67
查看次数

为什么我的ruby案例陈述不起作用?

这有什么问题?是的,我可以做一个if else声明,但我想用case语句做.

在我的控制器中

query_limit = case current_user
                when nil
                  return 5
                when is_admin?
                  return 200
                when has_role?('registered')
                  return 20
                else
                  return 5
              end


NoMethodError (undefined method `is_admin?' for #<V1::MyController:123123123>):
Run Code Online (Sandbox Code Playgroud)

puts query_limit 当我这样做时,#总是ELSE:

 query_limit = case current_user
                    when nil
                      return 5
                    when current_user.is_admin?
                      return 200
                    when current_user.has_role?('registered')
                      return 20
                    else
                      return 5
                  end
Run Code Online (Sandbox Code Playgroud)

模型用户

class User
  def is_admin?
    self.has_role?('administrator')
  end

  def has_role?(the_role)
    self.roles.any? {|role| role.slug == the_role}
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails case switch-statement

0
推荐指数
3
解决办法
2658
查看次数