精华内容
下载资源
问答
  • casewhen多条件
    万次阅读
    2018-10-21 16:27:55

    问题:

    declare int @Type
    select * from table where 。。。

    table字段Num有0和1两种值
    当参数@Type的值为0时,查询所有记录(包括0和1)
    当参数@Type的值为1时,查询Num为0的记录
    当参数@Type的值为2时,查询Num为1的记录
     

    方案1:

    declare int @Type
    select * from table where CASE WHEN @Type=0 THEN num WHEN @Type=1 THEN 0 ELSE 1 END = NUM

    方案2:

    USE tempdb
    GO
    IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
    GO
    CREATE TABLE t(
    	id INT IDENTITY(1,1) PRIMARY KEY,
    	Num INT
    )
    GO
    INSERT INTO t(Num) VALUES (1);
    INSERT INTO t(Num) VALUES (0);
    INSERT INTO t(Num) VALUES (1);
    INSERT INTO t(Num) VALUES (0);
    GO
    --- 以上为测试表及测试数据 ----
    
    --下面的写法,也许不算简洁,但足够清晰,如果有更多的情况,要扩展也非常容易
    DECLARE  @Type INT
    SET @type=1
    select * from t where Num IN (
    	SELECT [Num] FROM (
    		VALUES
    		 (0,0)	--当参数@Type的值为0时,查询所有记录(包括0和1)
    		,(0,1)
    		,(1,0)  --当参数@Type的值为1时,查询Num为0的记录
    		,(2,1)  --当参数@Type的值为2时,查询Num为1的记录
    	) AS T([Type],[Num])
    	WHERE [Type]=@Type
    )
    /*
    id          Num
    ----------- -----------
    2           0
    4           0
    (2 行受影响)
    */
    
    --或者
    select * from t where Num IN (
    	SELECT [Num] FROM (
    		SELECT 0 AS [Type],0 AS [Num]	--当参数@Type的值为0时,查询所有记录(包括0和1)
    		UNION ALL SELECT 0,1
    		UNION ALL SELECT 1,0  --当参数@Type的值为1时,查询Num为0的记录
    		UNION ALL SELECT 2,1  --当参数@Type的值为2时,查询Num为1的记录
    	) AS T
    	WHERE [Type]=@Type
    )
    /*
    id          Num
    ----------- -----------
    2           0
    4           0
    (2 行受影响)
    */
    

     

    更多相关内容
  • 步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询步骤 1 : 先运行,看到效果,再学习老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认...

    步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询

    步骤 1 : 先运行,看到效果,再学习
    老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。步骤 2 : 模仿和排错
    在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
    模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
    采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。
    推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
    这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
    这里提供了绿色安装和使用教程:diffmerge 下载和使用教程步骤 3 : 在前一步的基础上进行
    这一个知识点建立在Mybatis 入门教程的基础上进行。步骤 4 : 模糊查询
    1. 修改Category.xml,提供listCategoryByName查询语句select * from category_ where name like concat('%',#{0},'%')concat('%',#{0},'%') 这是mysql的写法
    如果是oracle,写法是select * from category_ where name like '%'||#{0}||'%'
    2. 运行测试List<Category> cs = session.selectList("listCategoryByName","cat");

    ba33ef9db163efe1914165cff601c248.png
    • Category.xml
    • TestMybatis.java

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.how2java.pojo"><select id="listCategoryByName" parameterType="string" resultType="Category">select * from category_ where name like concat('%',#{0},'%')</select> </mapper>package com.how2java;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.how2java.pojo.Category;public class TestMybatis {public static void main(String[] args) throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();List<Category> cs = session.selectList("listCategoryByName","cat");for (Category c : cs) {System.out.println(c.getName());}session.commit();session.close();}}步骤 5 : 多条件查询
    结合前面的模糊查询,多一个id>多少的条件
    1. Category.xml 准备sql语句<select id="listCategoryByIdAndName" parameterType="map" resultType="Category">select * from category_ where id> #{id} and name like concat('%',#{name},'%')</select>
    2. 测试代码
    因为是多个参数,而selectList方法又只接受一个参数对象,所以需要把多个参数放在Map里,然后把这个Map对象作为参数传递进去Map<String,Object> params = new HashMap<>();params.put("id", 3);params.put("name", "cat");List<Category> cs = session.selectList("listCategoryByIdAndName",params);

    223c0377e53aded75d3dffa28b7be6a7.png
    • Category.xml
    • TestMybatis.java

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.how2java.pojo"><select id="listCategoryByName" resultType="Category">select * from category_ where name like concat('%',#{0},'%')</select> <select id="listCategoryByIdAndName" parameterType="map" resultType="Category">select * from category_ where id> #{id} and name like concat('%',#{name},'%')</select> </mapper>package com.how2java;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.how2java.pojo.Category;public class TestMybatis {public static void main(String[] args) throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();Map<String,Object> params = new HashMap<>();params.put("id", 3);params.put("name", "cat");List<Category> cs = session.selectList("listCategoryByIdAndName",params);for (Category c : cs) {System.out.println(c.getName());}session.commit();session.close();}}
    更多内容,点击了解: https://how2j.cn/k/mybatis/mybatis-query/1107.html

    展开全文
  • casewhen(casewhen同时满足多条件)

    万次阅读 2021-05-07 13:27:19
    它们的用法和意义c语言有when吗? 应该是WHILE;...case 2: .select case 语句在有个可能的条件必须被检查时使用。与 if 语句不同,select case语句在找到匹配的case 表达式并执行了case 表达式和...

    它们的用法和意义

    c语言有when吗? 应该是WHILE; case 后面所跟的是一个常量,可以是数字,字符。用于列举SWITCH ()条件出现的情况,举例: int n,N;switch(n){case 1: N++;case 2: .

    select case 语句在有多个可能的条件必须被检查时使用。与 if 语句不同,select case语句在找到匹配的case 表达式并执行了case 表达式和下一个case 表达式之间的语句后.

    case when 就是case when 判断 case when 当满足条件 then 。。。 when .. then.可以写很多种情况,直到结束

    CASE WHEN NO6.member_relation = 2 THEN 0 ELSE 1 END = 1是什么意思.

    case 是sql国际标准就有的,他的作用就是实现条件语句(如同一般计算机语言中的if和switch……case)按照不同的使用方法case有两种语法:1.简单case语法是 就是实现.

    decode oracle 特有case when oracle , sql server, mysql 都可用。科目表: sid name;个人信息表: tid name sex age;成绩表: id score sid tid;case when 可以 等于的条.

    比如select count(case when nvl(num,0) > 0 then 1) from tablename; 或者。

    select * from 表 where 1=1 and (case when a=1 then a when 表.字段='asdfasdf' then b end)='值 ase when 变量度a='provider' then 'cp.id' else {1} end 这就不是判断语句,.

    select a,count(*) from (select a=case when age when age>=30 and age when age>=50 then '老年' end from test --括号里查出每条记录中对应年龄段属于哪个值 ) a_test --.

    '姓名',sum(case subject when 'yuwen' then score else 0 end) as '语文', max.

    太长了,但是看到一个问题,case when,要求返回的类型必须一直。 你看你的第一个case when语句 (case when to_char(statistic_date-payrefdate>=0) and to_char(.

    (case m.merchantCode when 'globalMerchant' then is null else m..

    select 订单号,制造单行号另外一行制造批号=case 制造单行号 when 'mo99-01' then 'mo99-02' else 'mo99-01' endfrom 制造单

    oracle 数据库 例如 select * from 表 where 1=1 and (case 'a' when 'a' then 1.

    条件in里面不能用case语句,只能分开写 if 条件=1 select *from student where name='张三' if 条件=2 select *from student where name='李四'

    Case具有两种格式。e799bee5baa6e58685e5aeb931333361313939简单Case函数和Case搜索函数。–简单Case函数CASE sexWHEN '1′ THEN '男'WHEN '2′ .

    select name ,(case scorewhen N'胜' then 1else 0end)as 胜,(case .

    CASE WHEN要么是查询条件要么是查询结构,表名逗号后面没用,语法不对

    select 分数,类别=Case WHEN 分数>=85 THEN '优秀' WHEN 分数>=75 THEN '良好' WHEN 分数>=60 THEN '及格' ELSE '不及格' END from 成绩表

    case 表达式知 when 值1 then 结果道1 when 值2 then 结果2 else 结果3 也有另一种形式回 case when 表达答式1 then 结果1 when 表达式2 then 结果2 else 结果3

    是为了更友好的显示数据,也可以说是做选择用的。

    select regionnum, case when ='000000' then '全国' else regionname end regionname from tbsysuserinfo where userlevel in(2,1) order by regionnum case when ..then ...

    select PayAmount from Table where ID=123,怎么用case when求PayAmount。

    ---下文举例分析了case when常用的用法,如下所示:涉及排序字段的应用 create table test( qty int , sort varchar(20)) insert into test(qty,sort)values(1,'a'),(2,'b'),(3,'d'),(1,'e') .

    1.IIf函数 根据表达式的值,来返回两部分中的其中一个。语法IIf(expr,truepart, . ascolnamefromtable 2. Switch在Access无法使用SQL语句中的case when语句,但可以通过.

    case when怎么用:如在表1中有字段A,A里有3个枚举值:01/02/03,当A为01。

    select case A when '01' then B when '02' then C when '03' then D end from t1

    如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。mysql> SELECT CASE 1 WHEN 1 THEN 'one' -> WHEN 2 THEN 'two' .

    展开全文
  • 字段有id, condition1,condition2,condition3,condition4,condition5 要求是查询DemoTable中,condition1,condition2,condition3,condition4,condition5五个字段中符合任意两个或两个以上的条件的内容。 可使用case ...
  • case when 多条件查询

    千次阅读 2018-02-26 09:39:44
    给客户做列表新增的时候,有个需求:根据广告类型从不同的表查询数据,保存到数据库。代码如下所示: &lt;div class="form-group" id="adType"&gt; &lt;label&...op

    给客户做列表新增的时候,有个需求:根据广告类型从不同的表查询数据,保存到数据库。代码如下所示:

    <div class="form-group" id="adType">
        <label>类型:</label>
        <select id='itemType' name="itemType">
            <option value="">请选择</option>
            <option value="1">资讯</option>
            <option value="2">商品</option>
            <option value="3">店铺</option>
            <option value="4">网页</option>
        </select>
    </div>

    资讯 (带搜索的下拉框) 1
    Information 从information表中取ID和title del_flag为0的

    /pet/web/information/information-web!getInfoSelectData

    商品(搜索的下拉框) 2
    goods 从goods表中取ID和name del_flag为0的

    /pet/web/goods/goods-web!getGoodsSelectData

    店铺(搜索的下拉框) 3
    store 从store表中取ID和name audit_Type为1的(已审核)

    /pet/web/store/store-web!getStoreSelectData

    网页(输入链接地址)4 手动输入

    综上所述,需要根据itemType的值从不同的数据库获取item_id的值。
    下面是查询的语句,通过case when在MySQL中查询

    (case 
      when (item_type = '1') then 
      (select  i.title from information i where i.id = item_id) 
      when (item_type = '2') then
      (select  g.name from goods g where g.id = item_id) 
      when (item_type = '3') then
      (select s.name from store s where s.id = item_id) 
      WHEN (item_type = '4') THEN 
      item_id 
      end
      ) as goodsName,

    大功告成!第一次使用case when。

    展开全文
  • 我们在进行项目开发中,经常会遇到多条件模糊查询的需求。对此,我们常见的解决方案有两种:一是在程序端拼接SQL字符串,根据是否选择了某个条件,构造相应的SQL字符串;二是在数据库的存储过程中使用动态的SQL语句...
  • oracle查询语句中case when的使用case when语句语法如下:case when 表达式 then valueA else valueB end;具体使用如下:select (case when a.column1 >=1 then ‘成功’ else ‘失败’ end) as Success_flagfrom...
  • case when + forEach 实现多条件多值批量更新1、单个条件update mydata_tablewhen id=#{item.id} then #{item.status}where id in#{item.id,jdbcType=BIGINT}2、多个条件update demo_tablestatus=when field2=#{item...
  • 实现关联条件casewhen效果

    千次阅读 2018-12-18 10:32:44
    select p.pcmxid,  j.csjtf * p.jsrs + j.dpf * p.jsrs + j.zsf * p.jsrs * p.sjts +  j.clbzf * p.jsrs * p.sjts + j.bxf * p.jsrs * p.sjts as jsxj  from pcmx p    left join (----关联一个过渡表 ...
  • case表达式—多条件表达式

    千次阅读 2021-03-19 10:11:35
    主题:case表达式—多条件表达式一、概念1、基本语法case when 条件1 then 值1when 条件2 then 值2when 条件3 then 值3....else 值n end2、执行过程:整个表达式有一个计算结果:和if else if else 一样3、语法要求1...
  • java if (status!=null &amp;amp;&amp;amp; !status.equals(&quot;&quot;)) { wheresql+=&quot;AND ISNULL(h.address, '') = 'hangzhou' &quot;... and y.is=1
  • select CASE when 1= 1 then 1 when 2=2 then 2 else 3 end as c1 ; -- 输出 1 第一个when符合条件时,则不会再往下进行其他when和else。 Hive 2.0.0
  • SQL利用Case When Then多条件判断

    千次阅读 2021-08-11 11:09:31
    WHEN(如果)条件1(成立)THEN(则)结果(输出)1 WHEN条件2THEN结果2 ......... ELSE(否则)结果(输出)X END Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' ...
  • Oracle多条件的统计查询(case when)

    千次阅读 2021-05-02 06:48:31
    要做一个统计查询的功能,因为涉及张表,多种条件的统计分析。一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该。然后就开始百度,多种条件下的统计。然后有一种语法让我眼前一亮...
  • sql中 case when then else条件

    千次阅读 2022-02-24 10:43:35
    sql中 case when then else条件1.案例1.1 场景1(查询)1.2 场景2(查询)1.3 场景3(转义)2.总结2.1 使用场景 这在笔试题中是比较常见的一个考法。 很同学完全不知道这种用法,导致笔试通不过,没机会面试...
  • when 条件1 then 值1  when 条件2 then 值2 else 其他值 END 别名  from 表名;  下面是一个分组求和示例: select sum(redpackmoney) as stota,ischeck from t_redpack group by isCheck 使用case ...
  • mysql if else 多条件

    千次阅读 2021-02-05 02:20:22
    MySQL 如何利用一条语句实现类似于if-else条件语句的判断一、 编写一条update语句实现商品涨价,具体规则如下1、99元以内,提价20%2、100-999元之间,提价10%3、1000-1999之间,提价5%4、其他提价2%update goodsset ...
  • CASE SCORE WHEN 'A' THEN '优' ELSE 0 END '优'和0数据类型不一致则报错: [Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER 简单CASE WHEN函数只能应对一些简单的业务场景,而CASE WHEN条件表达式的...
  • 针对CASE WHEN函数语句,...CASE 条件参数名称 WHEN 参数值1 THEN '显示值1' WHEN 参数值2 THEN '显示值2' ... ELSE '显示其他值' END **CASE搜索函数** CASE WHEN 条件参数名称 = '参数值1' THEN '显示值1' .
  • 用改良后的allCaseWhen会简单很,两步解决: 1. 表格形式列出条件 conditions ( ~pattern,~result, '^a','starts with a', 'e$','ends with e', 'o','contains o', '(an)|(ch)','contains an or ch' )...
  • 就需要多条件下面是一个多条件判断的sql:selectoper.opid,oper.user_name,oper.user_host,casewhen oper.oper_type = 1 then 'System Manager'when oper.oper_type = 2 then 'USER Manager'en...
  • 两种实现多条件判断的case when 方法 // An highlighted block select (case when 条件 and 条件 then 0 when 条件 and 条件 then 1 else 2 end) as name from table select count = (case when 条件 and 条件 then ...
  • 测试表:t_user表 批量更新 UPDATE t_user SET create_time = NOW(), NAME = ( CASE WHEN user_id = 10 THEN 'xiaoming' WHEN user_id = 11 THEN 'xiaohong' END ), age = ( ... WHEN us
  • 1.CASE WHEN 函数可用于多条件查询,多条件统计数量 例如:求符合2种条件的总数量 SELECT sum( CASE WHEN 条件1 THEN 1 ELSE 0 END ) 别名1, sum( CASE WHEN 条件2 THEN 1 ELSE 0 END ) 别名2 FROM 表名 ...
  • CASE WHEN是列出几个并行的条件...所以如果你的情况条件从小到大,那么遇到前边的,虽然可能符合条件,但是优先级是前边的优于后边的。所以遇到第一个符合的,就会取出这个条件需要的数据,而不会再往后判断。 ...
  • CASEWHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2WHEN 条件3 THEN 结果3WHEN 条件4 THEN 结果4.........WHEN 条件N THEN 结果NELSE 结果XENDCase具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex...
  • case when 多条件 多行转
  • 本内容介绍 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
  • 2、方式:casewhen拼凑 UPDATE 表名 SET (目标字段)BRANCH_NO = CASE WHEN (筛选条件)BANK_BRANCH_ID = '-10212' THEN 'TU32958123' WHEN BANK_BRANCH_ID = '-10213' THEN 'TU32958112' ELSE '测试' END, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,107
精华内容 442
关键字:

casewhen多条件