繁体   English   中英

如何使用条件创建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 ) );

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

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”,它将与始终相等的name匹配。

尝试这样的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM