mysql - 如何创建Mysql动态带条件查询语句

标签 mysql sql mybatis

我正在尝试为 Mybatis 创建一个带有某些条件的动态查询语句。

这不是有效的查询语句,但它描述了我当前的情况。

SELECT * FROM myTemp WHERE name="Jin" if (
(name is null AND type = 0 ANd status = 2) OR (name is NOT NULL AND 
type = 0 AND status =2 ) );

假设值“name”是动态值,如果名称不为空(不为空),则使用名称值执行查询,例如,

SELECT * FROM myTemp Where type = 0 AND status = 2 AND name ="someValue"

否则,如果名称为空或 null,则执行没有名称值的查询,例如,

SELECT * FROM myTemp where type = 0 AND status = 2.

如何根据上述条件创建 MySQL 查询语句?

最佳答案

您可以使用 COALESCE 函数来选择第一个非空值。像这样:

SELECT * FROM myTemp Where type = 0 AND status = 2 AND name = COALESCE("someValue", name)

这样,如果您给出“someValue”,它将与名称匹配。如果您给出 NULL 而不是“someValue”,它将匹配始终相等的名称。

关于mysql - 如何创建Mysql动态带条件查询语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52604798/

相关文章:

mysql - information_schema.tables 查询慢

mysql - 按年份和月份选择项目范围

sql - 当前日期缺失时的 30 天滚动/移动总和

sql - MySQL - Where IN 与 GROUP_CONCAT 一起

MySQL 子字符串连接速度很慢

java - MyBatis传递多个参数时,如何判断参数属性是否存在?

PHP 发布值但数据库未更新

java - 如何使用 iBatis 将数组写入 Oracle 10g XE 数据库?

java - 用更轻的解决方案替换完整的 ORM (JPA/Hibernate) : Recommended patterns for load/save?

MySQL LAST_INSERT_ID() 潜在问题