MySQL使用IF函数动态执行where条件的方法
作者:不忘初心,砥砺前行 发布时间:2024-01-25 02:46:34
标签:MySQL,where条件,IF,函数
IF函数
IF(expression ,expr_true, expr_false);
MySQL的IF()函数,接受三个表达式,如果第一个表达式为true,而不是零且不为NULL,它将返回第二个表达式。否则,它返回第三个表达式。根据使用它的上下文,它返回数字或字符串值。
IF函数在WHERE条件中的使用
先来看一个SQL:
select book_name,read_status from t_book;
结果如下:
read_status字段意思是阅读状态,有以下几个值: 0(未阅读),1(阅读中),2(已阅读)。
下面使用IF函数来查询:
# 查询未阅读的book
select book_name,read_status from t_book where IF(-1 = 0, true, read_status = 0);
# 查询阅读中的book
select book_name,read_status from t_book where IF(-1 = 1, true, read_status = 1);
# 查询已阅读的book
select book_name,read_status from t_book where IF(-1 = 2, true, read_status = 2);
# 查询全部的book
select book_name,read_status from t_book where IF(-1 = -1, true, read_status = -1);
JAVA使用
/**
* 根据阅读状态来查询book
* @param readStatus
* @return
*/
@Query(value = "select book_name,read_status from t_book where IF(-1 = :readStatus, true, read_status = readStatus)", nativeQuery = true)
List<TBook> queryByReadStatus(@Param("readStatus") String readStatus);
这样可以通过传入readStatus的值来控制是否执行read_status条件,当传值为-1时,不执行read_status = -1 条件,而是执行 true,相当于忽略了read_status条件,达到查询全部状态的book目的。
来源:https://www.cnblogs.com/codecat/p/12103250.html


猜你喜欢
- 本文实例分析了Python星号*与**用法。分享给大家供大家参考,具体如下:1. 加了星号(*)的变量名会存放所有未命名的变量参数,不能存放
- 在pandas 基础操作大全之数据读取&清洗&分析中介绍了pandas常见的数据处理操作,现在继续对pandas常用的数据合
- heapq 模块提供了堆算法。heapq是一种子节点和父节点排序的树形数据结构。这个模块提供heap[k] <= heap[2*k+1
- mycliMyCLI is a command line interface for MySQL, MariaDB, and Percona
- 参考其他比较专业的博客系统,都在代码块上有一个复制代码的按钮。用来快速复制整个代码块的代码。于是我也想给我的博客增加一个这个功能。注:chr
- 1、Mycat 应用场景Mycat 发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:1.
- 1. 排序有什么用“排序”这个专业名词原本是来源于计算机程序操作中的,是一种很常见的算法设计,当然,对交互设计来说,探讨冒泡排序和堆排序之间
- python中实现静态方法和类方法都是依赖于python的修饰器来实现的。 对象方法有self参数,类方法有cls参数,静态方法是不需要这些
- 一、函数初识1、定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。2、好处:代码重用;保持一致性
- 写 python 文件时,每个文件开头都必须注明版本和编码。每次我 touch 文件之后粘贴这两句话让我不胜其烦。由于我没有安装 pytho
- 1.查看当前电脑python版本python -V // 显示2.7.x2.用brew升级pythonbrew update p
- CSS如何做细线表格?天天用Div,倒把CSS表格细线这个最基础的应用忘了。table { border-collapse:&nb
- 废话少说,直接上代码<script type="text/javascript"> &
- 一、建立一个空白的解决方案,名称为“SpringDotNot”二、新建一个类库项目:IBLL在IBL
- 函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃。可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至
- 服务器现在同时输出json和xml两种数据,取决于服务程序和页面之间的约定。在程序遇到问题的时候会返回错误信息,也按照相同的约定会返回jso
- 一、QtDesigner介绍Qt Designer 是一款GUI界面工具,可以实现将UI设计界面转为Python代码的工具;二、安装 QTd
- Python实时数据采集-新型冠状病毒源代码 来源:https://github.com/Programming-With-Love/201
- Matplotlib 制作Matplotlib 作为 Python 家族最为重要的可视化工具,其基本的 API 以及绘制流程还是需要掌握的。
- 这种方案是通过对代码进行加密,然后利用C语音写解密的PHP扩展。破解难度会有提升,但依然是会被破解的。 从网上找过各种代码加密的开源方案。