[英]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.