equals()比较字符串和MySQL中=比较结果不一致

2024-01-03 17:38:53

问题:

普通车辆入园统计结果数量和普通车辆统计列表数量不一致?

列子:数量:967,列表:974

解决问题步骤

对比统计数量和统计列表的统计方法

统计数量代码实现

一:查询出车辆滞留表数据List

二:查询出系统登记车辆数据List

三:比较两个List

四:equals()相同车牌号计数统计

列表数据sql实现

关联两个表,条件车牌号相同 =

对比

同:车辆滞留表数据List和登记车辆数据查出数据条数相同;

异:比较车牌号数据不同

统计数量:

//普通车辆数量
int ordinaryVehicleGardenCount = 0;                
//遍历普通车辆数据
for (DspMjzkOrdinaryVehicle car : value) {
    //遍历滞留表数据
    for (DspIccEventCarRetention iccEventCarRetention : iccEventCarRetentions) {
                            //如果普通车辆和滞留表的车牌号对应,那么加1
          if (car.getVehiclesId().equals(iccEventCarRetention.getCarNum())) {
                                ordinaryVehicleGardenCount++;
           }
    }
 }

统计列表:

 SELECT
			b.vehicles_id,
			a.car_num
FROM dsp_icc_event_car_retention a,
		dsp_mjzk_ordinary_vehicle b
  WHERE a.car_num = b.vehicles_id 
 AND a.is_deleted = 0
 AND a.`status` = 1
 AND b.vehicle_use = 1
 AND b.is_deleted = 0
 AND b.`status` = 1
 AND b.create_dept IS NOT NULL
 AND a.car_num IS NOT NULL;

解决问题

查询问题知识

1.对于字符串的 equals 方法:

  • 默认情况下,equals 是区分大小写的,即大写和小写字母被视为不同。
  • 如果你想进行不区分大小写的比较,可以使用 equalsIgnoreCase 方法。

2.在 MySQL 中,字符串的比较默认是不区分大小写的。

SELECT * 
FROM dsp_mjzk_ordinary_vehicle 
WHERE vehicles_id='川fjW790'

?

实现MySQL区分大小写比较方法:

1.使用 BINARY 操作符
-- BINARY 字段 实现二进制的比较 在mybatisplus中xxx.xml会报错
-- BINARY 操作符在 MyBatis Plus 的查询构造器中可能不被支持
SELECT * 
FROM dsp_mjzk_ordinary_vehicle 
WHERE  BINARY vehicles_id ='川FJW790';

?换为'川fjW790'查不出来数据

2.使用 COLLATE 子句

utf8mb4_bin 是指定二进制比较的字符集

-- 字段COLLATE utf8mb4_bin实现进行二进制比较
SELECT * 
FROM dsp_mjzk_ordinary_vehicle 
WHERE  vehicles_id COLLATE utf8mb4_bin='川FJW790' 

换为'川fjW790'查不出来数据

测试

1.测试发现BINARY 操作符在 MyBatis Plus 的查询构造器中可能不被支持

2.最终使用COLLATE 子句

 SELECT
			b.vehicles_id,
			a.car_num
 FROM dsp_icc_event_car_retention a,
		dsp_mjzk_ordinary_vehicle b
 WHERE a.car_num COLLATE utf8mb4_bin = b.vehicles_id COLLATE utf8mb4_bin
 AND a.is_deleted = 0
 AND a.`status` = 1
 AND b.vehicle_use = 1
 AND b.is_deleted = 0
 AND b.`status` = 1
 AND b.create_dept IS NOT NULL
 AND a.car_num IS NOT NULL;
 

文章来源:https://blog.csdn.net/qq_23591001/article/details/135364960
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。