动态查询的执行结果有差异 返回
表数据如下:

1:IsNot条件查询
{
"pageIndex": 1,
"pageSize": 10,
"conditions": [
{
"fieldName": "title",
"conditionalType":"IsNot",
"fieldValue": "小说"
}
]
}
Sql语句如下:
查询结果如下:

问题:为什么Title为null的没有查出来?
热忱回答(16)
-
fate sta VIP0
2025/11/17这个我优化一下,之前只处理了 is not null。没考虑 <> 'a' or is null情况
0 回复 -
fry VIP0
2025/11/17@fate sta:还有个问题,如下:

情况2 是对的,情况1测不出来,参数如下:(情况1和类型Equal有区别吗?这个容易引起歧义)
0 回复 -
fry VIP0
2025/11/17@fate sta:空串和null都加一下
0 回复 -
fate sta VIP0
2025/11/17SqlSugarCore 5.1.4.208
更新这个版本,还有问题发新的用例
0 回复 -
fry VIP0
2025/11/17@fate sta:IsNot这个可以了,看一下EqualNull 中的情况1
0 回复 -
fate sta VIP0
2025/11/17EqualNull 是1有什么问题吗?
0 回复 -
fate sta VIP0
2025/11/17
目前逻辑没有问题
0 回复 -
fry VIP0
2025/11/17@fate sta:如下:
情况1 value不等于null =======> title='小说'

结果:
0 回复 -
fate sta VIP0
2025/11/17没有重现你说的,你AOP看一下SQL是不是查询的列写错了
0 回复 -
fry VIP0
2025/11/17@fate sta:
稍等,我再试试
0 回复 -
fry VIP0
2025/11/17@fate sta:ok,这个问题可以了,null的话,空串查不出来
0 回复 -
fry VIP0
2025/11/17@fate sta:还有个问题,索引的优化问题,如下Sql:
SELECT `Title`,`Content`,`Remark`,`OpeningDate`,`Years`,`TenantId`,`PlatformId`,`CreateId`,`CreateName`,`CreateTime`,`UpdateId`,`UpdateName`,`UpdateTime`,`Id`,`IsDeleted`
FROM `Agreement`
WHERE `title` IS NULL AND NOT ( `IsDeleted`=1 ) AND ( `PlatformId` = '08dd9e7f-021f-4f9f-8e2d-9c18b71e4a77' )
ORDER BY `Id` Desc LIMIT 0,10
条件放到了第一位,mysql的索引优化问题可以考虑一下,目前ref的级别也不错,但是按道理 title is null有可能使 title这个列的索引查询失效,能不能统一放放到后面,
WHERE NOT ( `IsDeleted`=1 ) AND ( `PlatformId` = '08dd9e7f-021f-4f9f-8e2d-9c18b71e4a77' ) and `title` IS NULL
0 回复 -
fate sta VIP0
2025/11/17描述清楚问题这个条件哪来的
0 回复 -
fry VIP0
2025/11/18@fate sta:调试生成的
0 回复 -
fate sta VIP0
2025/11/18不清楚条件哪来的,过滤器还是where 最好有DEMO
0 回复 -
fry VIP0
2025/11/18@fate sta:是生成的最优Sql问题,这个先不管了
0 回复