精华内容
下载资源
问答
  • 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

    展开全文
  • 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
      

       

    展开全文
  • oracle where case when where后面跟case when

    千次阅读 2013-07-16 18:59:32
    where case when where后面跟case when
    where case when 
    where后面跟case when
    展开全文
  • SELECT * FROM A WHERE ( CASE WHEN PSTYP = '9' THEN POSID1 WHEN PSTYP = '0' THEN POSID2 END ) = '1' DECODE(列名, 值1, 返回值1,值2,返回值2,默认值)
    SELECT
    	* 
    FROM
    	A
    WHERE 
    	( CASE WHEN PSTYP = '9' THEN POSID1  WHEN  PSTYP = '0' THEN POSID2 END ) = '1'

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

    展开全文
  • 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...
  • 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 =...
  • 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....
  • 今天一个需要,想着是否可以where 后面使用case when ,测试一下果然可以,强大的SQL没有解决不了的难题。 select login_tm, dt from adm.user_login_tab where case when 1 != 1 then dt = '2019-11-13' else dt ...
  • 在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...
  • SELECT 类型,异动日期,操作时间,签约单位,所属公司,编号,姓名,一级部门,二级部门,三级部门,职位,入职日期,转正日期,离职日期,异动一级部门,异动二级部门,异动三级部门,异动职位 FROM HM_RYTRANS_BB WHERE ...
  • 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
  • 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 因为这个是扩展功能,而且这段代码是
  • SELECT 类型,异动日期,操作时间,签约单位,所属公司,编号,姓名,一级部门,二级部门,三级部门,职位,入职日期,转正日期,离职日期,异动一级部门,异动二级部门,异动三级部门,异动职位 FROM HM_RYTRANS_BB ...
  • 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...
  • or (select count(*) from KT_EXO_LabOpenObj where olobj_type=2 and ola_no=b.ola_no and olobj_id=(select bs_no from @t))>0 --专业 or (select count(*) from KT_EXO_LabOpenObj where olobj_type=3 and ...
  • mysql case when 语句 放在 where 条件前,条件的用法 case when 放在 where 语句之前,作为一列数据的过滤 case when 放在 where 语句之后 转载
  • select * from test where 1=1 and case when 1=1 then 1=1 else 1=1 end; 类似这样的语句全都解析不了. 报错信息 net.sf.jsqlparser.JSQLParserException at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse...
  • 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...
  • 表的所有数据如下图:   下图and后面的1可以视为传入的参数,当它等于1、2、3时,where后面分别执行不同的三个条件,如下图:
  • 在开发中遇到这样的一个需求...//这里就建了一张表,所以就用表中的字段,在case when的条件查询语句中查询返回flag的值如果等于1 则where后执行flag=‘1’的条件,否则执行flag=‘0的条件’ ( CASE WHEN ( SELECT fla
  • 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' 如果...
  • (case when '1' = '1' then (select brno from poozfmessagebrno where upbrno = '56601') else '50000' end) and a.cifno = b.cifno and bal != '0' group by b.new_projectsize, a.cifno) group by ...
  • case when pay_money >0 and pay_money <=5 then 1 else 0 end as '0-5' from sz_order where pay_time BETWEEN '2020-11-01' and '2020-12-01') t</code></pre> ...
  • 本文是《彻底搞懂MySQL数据库锁机制》系列第3篇,是对数据库锁机制的总结。对数据库锁的了解,往往也是区分Java程序员中高级的一个重要标志。日常开发中,锁也是我们容易踩坑的地方。...八、SQL脚本测试case九、特...
  • 一般用法1select (case when 1=2 or 'a' like '%b%' then 'a'when 1=4 or 'b' in ('b','bb') then 'b'else 'c' end)as testFieldfrom dual结果为b。多次when和java中else if一样 执行顺序是从前到 当满足某个...
  • Where are Duke’s case-studies from the Java EE 6、7 Tutorial?java EE 7下载 Java EE SDK下载完成,解压 在glassfish4/docs/javaee-tutorial/examples/case-studies下即可看到对应的用例,这个版本运行时使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 434
精华内容 173
关键字:

where后case