MySQL使用IF函数动态执行where条件的方法

2023年 4月 15日 34.3k 0

目录 IF函数 IF函数在WHERE条件中的使用 JAVA使用 IF函数 IF(expression ,expr_true, expr_false); MySQL的IF()函数,接受三个表达式,如果第一个表达式为true,而不是零且不为NULL,它将返回第二个表达

目录IF函数IF函数在WHERE条件中的使用JAVA使用

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目的。

到此这篇关于MySQL使用IF函数来动态执行where条件的文章就介绍到这了,更多相关MySQL动态执行where条件内容请搜索每日运维以前的文章或继续浏览下面的相关文章希望大家以后多多支持每日运维!

【本文由:香港云服务器 http://www.558idc.com/ne.html 复制请保留原URL】

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论