-
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的语法就会报错,不支持这种方式。但是如果真的存在这种业务...- 准备测试数据,建表语句
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, '=');
- 测试目的
主要是想根据某个字段的不同,执行不同的where条件,很明显在Mysql下是可以直接通过case-when来写,但是oracle的case-when则不行,同样的sql修改成oracl的语法就会报错,不支持这种方式。但是如果真的存在这种业务场景,我们可以迂回一下,多走一步来实现这种场景,达到同样的目的。
- 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
- 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
- 准备测试数据,建表语句
-
在where条件中如何使用CASE子句
2020-06-24 15:13:20select currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’ –注:currentlyvalue=‘是’ 下面sql中使用条件:...where isdegreecourse=(case when (select currentlyvalue from fw_syselect currentlyvalue from fw_sysconfig where PARAMCODE=‘isDegreeCourse’
–注:currentlyvalue=‘是’ 下面sql中使用条件:isdegreecourse = ‘是’ ;否则使用条件 studytypecode = 1SELECT *
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:51select 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:15CASE 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... -
where 加case 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
2018-11-08 21:55:44oracle where 条件中用case -
关于sql语句中where条件内添加case when的问题
2019-08-29 15:09:28里面应该是集成了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 条件中
2022-04-06 11:35:15mysql case when where 的用法 -
ORACLE的CASE WHEN以不同列作为条件查询
2020-06-15 11:20:08之前好几次做看板的时候,在使用ORACLE的case when时,一直找不到合适的例子,大多数的用法都是对查询的结果以case when 作为条件筛选,但是实际上很多条件或者串表的地方也是可以用到case when作为使用的手段的。... -
oracle的sql使用CASE WHEN ,可以在where条件中使用噢
2020-11-20 18:17:551.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,示例说明
2020-11-05 13:59:15sql 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:51case 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' 如果... -
MySQL中使用case when 语句实现多条件查询的方法
2020-09-11 05:26:22今天在一个应用中使用到了一个比较特殊的数据查询要求。需要的朋友可以参考下。 -
sqlserver 中 case when 的用法
2018-12-27 14:18:161.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:00Where (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 报错解决方案
2022-02-21 16:58:38本内容介绍 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 因为这个是扩展功能,而且这段代码是 -
MySql使用case when then end where 关键字执行批量更新(batchUpdate)时的避坑指南
2019-09-12 16:24:40首先可以使用mybatis-plus的com.baomidou.mybatisplus.extension.service包下的IService接口里面的批量方法 但它的实现原理是伪批量,所以我参照系统中之前的批量更新写法,写了一个Mysql自带的批量更新,Map.xml中... -
SQL、PRESTO CASE WHEN和where条件语句、null记为0、使用leftjoin、like模糊查找、降序排序
2020-05-16 12:31:11SQL、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 ... -
mysql中的case条件语句用法
2021-02-08 13:52:43在第一个方案的返回结果中,value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。... SELECT CASE 1 WHEN 1 THEN'one'-> WHEN 2 THEN 'two' ELSE 'more'END;-> 'one'mysql&... -
where 里面 写入 case when 语句
2011-10-27 22:52:41代码: 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 -
SQLServer_where添加类似ifelse条件(casewhen)
2019-01-11 15:20:14java if (status!=null &... wheresql+="AND ISNULL(h.address, '') = 'hangzhou' "; if (status.equals("1")){//是 wheresql+=" and y.is=1 -
CASE WHEN 及 SELECT CASE WHEN的用法
2018-10-16 18:40:37CASE WHEN 及 SELECT CASE WHEN的用法 (1)Case具有两种格式。简单Case函数和Case搜索函数。 1)、简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 2)、Case搜索...
收藏数
68,462
精华内容
27,384