如何创建带条件的 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)
我正在尝试为 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)