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

how to create a Mysql dynamic query statement with conditions

我正在尝试为 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 第一个非空值。像这样:

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

这样,如果你给"someValue",它就会匹配到名字。如果您给出 NULL 而不是 "someValue",它将匹配始终相等的名称。

尝试这样的事情:

SELECT *
FROM myTemp
WHERE type = 0 AND status = 2 AND (name = "someValue" OR name IS NULL)