精华内容
下载资源
问答
  • oracle where 使用case when
    千次阅读
    2020-05-09 16:57:08
    SELECT
    	* 
    FROM
    	A
    WHERE 
    	( CASE WHEN PSTYP = '9' THEN POSID1  WHEN  PSTYP = '0' THEN POSID2 END ) = '1'

    DECODE(列名, 值1, 返回值1,值2,返回值2,默认值)

    更多相关内容
  • NULL 博文链接:https://vernonchen163.iteye.com/blog/1908053
  • where后面case-when的用法

    千次阅读 2019-12-11 15:31:15
     主要是想根据某个字段的不同,执行不同的where条件,很明显在Mysql下是可以直接通过case-when来写,但是oracle的case-when则不行,同样的sql修改成oracl的语法就会报错,不支持这种方式。但是如果真的存在这种业务...
    1. 准备测试数据,建表语句
      drop table test_table;
      create table test_table
      (
        col_a        NUMBER,
        col_b        NUMBER,
        col_c        VARCHAR2(5)
      )
      
      insert into test_table values(2, 1, '>');
      insert into test_table values(1, 2, '>=');
      insert into test_table values(2, 1, '<');
      insert into test_table values(1, 2, '<=');
      insert into test_table values(2, 2, '=');

       

    2. 测试目的

          主要是想根据某个字段的不同,执行不同的where条件,很明显在Mysql下是可以直接通过case-when来写,但是oracle的case-when则不行,同样的sql修改成oracl的语法就会报错,不支持这种方式。但是如果真的存在这种业务场景,我们可以迂回一下,多走一步来实现这种场景,达到同样的目的。

    1. MySQL数据库
      --Mysql支持这种写法,可以根据关键字来执行不同的条件
      --可以理解case-when函数在Mysql下是可以返回直接执行的表达式
      
      SELECT * FROM test_table WHERE 
      CASE col_c 
        WHEN '>' THEN col_a > col_b
        WHEN '>=' THEN col_a >= col_b
        WHEN '<' THEN col_a < col_b
        WHEN '<=' THEN col_a <= col_b
        WHEN '=' THEN col_a = col_b
      END

       

    2. Oracle
      --Orale数据库的case-when函数则不能返回直接执行的表达式
      --但是我们可以转个弯,在select关键字后,将关键字对应的
      --表达式的计算结果值存为临时列,然后将结果集当一张临时
      --表,在根据where条件去过滤数据
      select col_a, col_b, col_c from (
      select 
       col_a, col_b, col_c,
       (case when (col_c = '>' and (col_a - col_b) > 0) then 1  
          when (col_c = '>=' and (col_a - col_b) >= 0) then 1  
          when (col_c = '=' and (col_a - col_b) = 0) then 1  
          when (col_c = '<' and (col_a - col_b) < 0) then 1  
          when (col_c = '<=' and (col_a - col_b) <= 0) then 1
          else 0 
       end) as temp
      from test_table )
      where temp = 1
      

       

    展开全文
  • SqlServer Where后面Case When语句的写法

    千次阅读 2016-12-03 15:12:00
    SqlServer Where后面Case When语句的写法 select*fromtb where(casewhencol='***'then'***'else'***'end)='***' posted on 2016-12-03 15:1...
    select  from  tb
    where  ( case  when  col= '***'  then  '***'  else  '***'  end )= '***'
    posted on 2016-12-03 15:12 飘扬De黑夜 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/volts0302/p/6128802.html

    展开全文
  • SQL之CASE WHEN用法进阶——where语句后跟case语句(二) SQL之CASE WHEN用法进阶——Update语句使用case更新、数据对比(三) 在where后面使用case when的说明报错语句 select * from A, B where B.name in CASE when ...

    SQL之CASE WHEN基础用法详解(一)

    SQL之CASE WHEN用法进阶——where语句后跟case语句(二)

    SQL之CASE WHEN用法进阶——Update语句使用case更新、数据对比(三)

    在where后面使用case when的说明
    报错语句

    select *
    from A, B
    where B.name in
    CASE
    when A.id = 0 then ('aaa', 'bbb')
    when A.id = 1 then ('bbb', 'ccc')
    when A.id = 2 then ('ccc', 'ddd')
    END
    


    正确写法:将B.name in 放到CASE END 中

    select *
    from A, B
    where
    CASE
    when A.id = 0 then B.name in ('aaa', 'bbb')
    when A.id = 1 then B.name in ('bbb', 'ccc')
    when A.id = 2 then B.name in ('ccc', 'ddd')
    END
    


    补充:当使用 B.name = 时,将不会出现以上问题,也就是如下写法也正确

    select *
    from A, B
    where B.name =
    CASE
    when A.id = 0 then 'aaa'
    when A.id = 1 then 'bbb'
    when A.id = 2 then 'ccc'
    END
    
    展开全文
  • 在MySQL中,在where后面使用case when的说明 报错语句 select * from A, B where B.name in CASE when A.id = 0 then ('aaa', 'bbb') when A.id = 1 then ('bbb', 'ccc') when A.id = 2 then ('ccc', 'ddd') END...
  • wherecase when条件

    千次阅读 2019-06-12 18:57:00
    今天遇到需要在where后case when条件,由于case when 只能返回一个值,在当前情况有些不好处理,研究终于找到解决方案 1 DECLARE @bussinessType INT; 2 SET @bussinessType = 1; 3 SELECT * 4 FROM dbo....
  • 在开发中遇到这样的一个需求...//这里就建了一张表,所以就用表中的字段,在case when的条件查询语句中查询返回flag的值如果等于1 则where后执行flag=‘1’的条件,否则执行flag=‘0的条件’ ( CASE WHEN ( SELECT fla
  • 但我觉得这样的客户体验不好,所以想到了能不能在where中增加case when。所以在网上查了一下,果然是可行的。所以就将下钻的查询条件修改成了下图这样: 之前的条件为:study.HospitalName='${xxxx}'。 这里记录...
  • WHERE case when true then s.area_code = '440111015004' else s.area_type = '03' end 报错信息: [执行语句1]: SELECT * FROM s_sg_area s WHERE case when true then s.area_code = '440111015
  • MySQL在where后面使用case when

    万次阅读 2018-05-15 09:24:42
    在MySQL中,在where后面使用case when的说明 报错语句 select * from A, B where &amp;amp;amp;amp;lt;font color=red &amp;amp;amp;amp;gt;B.name in&amp;amp;amp;amp;lt;/font&amp;amp;amp;amp...
  • sql中的where后面使用case when

    千次阅读 2013-06-08 03:35:09
    有这样一段sql文。 select B.bCol_1,B.bCol_2,C.cCol_1 from TBL_B B left join TBL_C C ...现在需要扩展功能,就是只有当表B.bCol_Flag=0时,where的条件改为C.cCol_Time 因为这个是扩展功能,而且这段代码是
  • WHERE中使用CASE

    千次阅读 2019-03-23 10:28:15
    CASE statements allow you to categorize data that you’re interested in – and exclude data you’re not interested in. In order to do this, you can use a CASE statement as a filter in the W...
  • sql 动态修改where查询 case when用法

    千次阅读 2020-08-14 16:56:04
    case when的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 第一种 格式 : 简单Case函数 : case 列名 when 条件值1 then 选项1 when 条件值2 then 选项2....... else 默认值 end 第二种 格式 :Case...
  • where条件中使用CASE WHEN 语句

    千次阅读 2016-06-15 17:10:00
    CREATE TABLE TB_Test_Report ...CASE WHEN 可以用于WHERE CASE WHEN 中可以使用AND 进行逻辑判断 CASE WHEN 表达式最终由返回值   转载于:https://www.cnblogs.com/songr/p/5588181.html
  • mysql where case when的查询

    千次阅读 2020-07-15 14:08:14
    WHERE ad = 10 and CASE WHEN dha = 0 这个是要操作的数据 SELECT * FROM `eat_milk_every_day` WHERE ad = 10 AND CASE WHEN dha = 0 THEN fe = 0 ELSE ca = 10 END 这个查询的意思是:当dha =...
  • sql code: select * from table_...where (case when t.table_column='条件' then t.table_column when t.table_column='条件' then t.table_column end)='条件' my sql code: -- 测试sql SELECT *FROM PROJ...
  • mysql case 作为where条件

    千次阅读 2020-07-24 20:03:38
    AND ( CASE WHEN SYSDATE( ) > dc_end_datetime THEN 3 WHEN SYSDATE( ) > dc_begin_datetime AND SYSDATE( ) < dc_end_datetime THEN 1 WHEN SYSDATE( ) < dc_begin_datetime THEN 2 END = '...
  • 表的所有数据如下图:   下图and后面的1可以视为传入的参数,当它等于1、2、3时,where后面分别执行不同的三个条件,如下图:
  • select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’ –注:currentlyvalue=‘是’ 下面sql中使用条件:...where isdegreecourse=(case when (select currentlyvalue from fw_sy
  • mysql case when where 的用法
  • SELECT PrUser.* ...WHERE (PrUser. STATUS != '4') AND ( PrUser. STATUS = '1' OR PrUser. STATUS = '2' ) AND PrUser.uid NOT LIKE '%admin%' AND CASE WHEN ( PrUser.jlunit IS NOT NULL AND P...
  • mysql case when 语句 放在 where 条件前,条件的用法 case when 放在 where 语句之前,作为一列数据的过滤 case when 放在 where 语句之后 转载
  • oracle 在where条件中写case when

    万次阅读 2018-03-20 15:16:32
    业务:当状态等于2时判断表中的userid 是否和当前登录人id相等 SELECT * FROM tbname t WHERE 1=1AND (CASE WHEN t.vc_state = '2' THEN t.vc_userId ELSE 当前登录人id END ) = 当前登录人id...
  • phase ON loan_phase.loanId = loan.loanId WHERE (CASE loan.status when 520 then 1=1 else 'loan_phase.phaseNumber=loan.repayedTermCount+1' end) AND loan.borrowerId = 100588 AND ( loan. STATUS = 500 OR ...
  • Oracle 如何在where子句中加入case when

    千次阅读 2019-07-18 16:12:51
    select a.*,a.rowid from sys_order a where 1=1 and (case when a.order_type in ('01', '02') then a.phone_num else a.staff_phone ...
  • casewhere后面的用法

    千次阅读 2014-07-01 15:09:14
    CASE WHEN T.DCCD='0' THEN '' WHEN T.DCCD='1' THEN (convert(varchar,(SELECT COUNT(*) FROM CB_GZDJ WHERE (DJH IN (T.DJH,T.CTDJH) OR CTDJH IN (T.DJH,T.CTDJH))AND CBLX IN('010','020') ))+'/'+convert(varc
  • where 条件 in 判断语句中使用case when

    千次阅读 2020-09-25 16:30:51
    case when 一般用在 select 后面或者where条件的=后面,如: select case when '${unit}'='单' then order_num else quantity_num from a where project = case when '${type}'='T1' then 'P1' else 'P2' 如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457,715
精华内容 183,086
关键字:

where后case