精华内容
下载资源
问答
  • 2018-12-18 23:57:50

    CASE WHEN 其实相当于产生了一个列,最后WHERE 再按那个列来限定

    SELECT * AS A FROM TB WHERE CASE WHEN 1=1 THEN 1 ELSE 0 END =1
    -- 等价于
    SELECT * FROM (SELECT * ,CASE WHEN 1=1 THEN 1 ELSE 0 END AS A FROM TB) T WHERE A=1
    
    更多相关内容
  • 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
      

       

    展开全文
  • select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’ –注:currentlyvalue=‘是’ 下面sql中使用条件:...where isdegreecourse=(case when (select currentlyvalue from fw_sy

    select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’
    –注:currentlyvalue=‘是’ 下面sql中使用条件:isdegreecourse = ‘是’ ;否则使用条件 studytypecode = 1

    SELECT *
    FROM base_trainschemecourse
    where isdegreecourse=(case when (select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’)='是’then ‘是’ else isdegreecourse end)
    and studytypecode=(case when (select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’)='是’then studytypecode else ‘1’ end)

    展开全文
  • 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 ...
    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 
                    end)= '123456789'

     

    展开全文
  • 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...
  • 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....
  • oracle where 条件中用case
  • 里面应该是集成了excel插件,报表样式如下: 今天在项目中遇到一个这样的场景: A为汇总页面,显示的是按医院分组统计出来的一些数据,效果如下图 图中每一列都能下钻到另一个页面,医院名称和起始时间都作为...
  • SQL --case里面嵌套case

    2021-03-03 17:48:00
    今天做工程时,遇到了case里面嵌套case的情况直接上例子SELECTCASEcount(*)WHEN0THEN'xx'ELSEtuf.FOLLOW_FLAGENDFROMT_USER_FOLLOWAStufWHERE(USER_ID_A=1000000006ANDUSER_ID_B=1000000005AND(FOLLOW_FLAG='00'...
  • mysql case when where 的用法
  • 之前好几次做看板的时候,在使用ORACLE的case when时,一直找不到合适的例子,大多数的用法都是对查询的结果以case when 作为条件筛选,但是实际上很多条件或者串表的地方也是可以用到case when作为使用的手段的。...
  • 1.CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他...
  • sql where条件添加判断 case when… then…else…end,示例说明 select * --count(ttt.id) from t_yhxx_zdcsqd_sj ttt where ttt.rwqd_id = '40268fcb7319bdec017326f537f223a0' and case when to_char(sysdate, ...
  • 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' 如果...
  • 今天在一个应用中使用到了一个比较特殊的数据查询要求。需要的朋友可以参考下。
  • sqlserver 中 case when 的用法

    万次阅读 2018-12-27 14:18:16
    1.case when 的用法 (1)简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END (2)--Case搜索函数  CASE WHEN sex = '1' THEN '男'  WHEN sex = '2' THEN '女'  ELSE '...
  • SQL 中在WHERE里面使用Case语句

    千次阅读 2010-08-12 11:41:00
    今日上班,不想写去函数实现一些逻辑,好便于维护 于是想到用CASE 但是一直不知道怎么用 在网上看到一个将CASE 的变态用法的 参考 终于做出来了 ...
  • where 中的 case 用法

    千次阅读 2013-10-11 18:07:00
    Where (SONUM = case @IsShow When 1 Then 'D3990001 ' end ) or (SONUM like case @IsShow When 2 Then 'D3A370261 ' end )  如是相同的操作符可用下面的方式  Select *  From ...
  • SQLServer2008 在where条件中使用CASE WHEN

    千次阅读 2016-03-11 14:49:25
     (case when LEN(A.startMonth)=1 and A.startMonth!=0 then cast((CAST(startYear as varchar(4))+'0'+cast(A.startMonth as varchar(1))) as date)  when LEN(A.startMonth)=2 then cast(CAST(startYear as ...
  • 本内容介绍 Oracle条件索引 case when 如何在HGDB中转换使用。 详细信息 1、oracle 索引 create unique index I_GL_VOUCHER_7 on gl_voucher(case when voucherkind<>2 then pk_accountingbook||pk_voucherty
  • 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 因为这个是扩展功能,而且这段代码是
  • 首先可以使用mybatis-plus的com.baomidou.mybatisplus.extension.service包下的IService接口里面的批量方法 但它的实现原理是伪批量,所以我参照系统中之前的批量更新写法,写了一个Mysql自带的批量更新,Map.xml中...
  • SQL、PRESTO CASE WHEN和where条件语句、null记为0、使用leftjoin、like模糊查找、降序排序 SELECT a1.*, --*代表select所有的列 CASE WHEN a3.apply_time IS NULL THEN 0 ELSE 1 END AS apply_time_new --完件时间...
  • Oracle中Case When的用法

    千次阅读 2021-11-08 20:18:28
    一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 END FROM table1; 1.2、检索的cse表达式 SELECT CASE WHEN 条件1 THEN ...
  • Spark CASE WHEN 写法案例

    千次阅读 2022-01-20 17:52:26
    今天才写一个Spark的大数据报表的时候,遇到一个group by结合Case When的语法问题,现将问题的详细经过记录下来,希望可以对有遇到这个问题伙伴一些帮助。 二、问题 运行报错详细如下截图: 很明显是case ...
  • 在第一个方案的返回结果中,value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。... SELECT CASE 1 WHEN 1 THEN'one'-> WHEN 2 THEN 'two' ELSE 'more'END;-> 'one'mysql&...
  • 代码: SELECT CK.RESPERSON AS NAME FROM CP_KPI_INFO_FY CK, CP_DIM_PROVIDER CP ...WHERE CK.PROVIDERID = CP.ID AND CP.ID = case when 变量a='provider' then 'cp.id' else '{1}' end; - - or
  • java if (status!=null &... wheresql+=&quot;AND ISNULL(h.address, '') = 'hangzhou' &quot;; if (status.equals(&quot;1&quot;)){//是 wheresql+=&quot; and y.is=1
  • CASE WHEN 及 SELECT CASE WHEN的用法

    千次阅读 2018-10-16 18:40:37
    CASE WHEN 及 SELECT CASE WHEN的用法 (1)Case具有两种格式。简单Case函数和Case搜索函数。 1)、简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 2)、Case搜索...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,462
精华内容 27,384
关键字:

where里面的case