未修改的SQL
SELECT
c.*
FROM
cost_vehicle_inspec c
WHERE
c.plate_number LIKE trim( REPLACE ( concat( '%', '123', '%' ), ' ', '' ) )
OR c.plate_code LIKE trim( REPLACE ( concat( '%', '123', '%' ), ' ', '' ) )
AND c.inspec_next_time BETWEEN '2021-07-06 00:00:00.0'
AND '2021-10-06 23:59:59.0'
LIMIT 20;
这样通过plate_number ,plate_code 和 inspec_next_time 三个条件进行查询时inspec_next_time 会失效,是将所有日期的数据都展示出来,只将like后的条件作为模糊查询的条件。
修改:
需要在like的最外层添加一层括号,类似以
( like xxxx or xxxx )
SELECT
c.*
FROM
cost_vehicle_inspec c
WHERE
(
c.plate_number LIKE trim( REPLACE ( concat( '%', '123', '%' ), ' ', '' ) )
OR c.plate_code LIKE trim( REPLACE ( concat( '%', '123', '%' ), ' ', '' ) )
)
AND c.inspec_next_time BETWEEN '2021-07-06 00:00:00.0'
AND '2021-10-06 23:59:59.0'
LIMIT 20;