bug:筛选条件时,筛选出了不符合电影类型的影片
问题如下:
数据库的film表中的字段type_ids类型是varchar,他用来存储电影的类型id,如:type_ids里面存的是[1,12,15],说明他存的是电影类型中id为1,12,15的电影类型。
现在有一个功能是多条件筛选电影,根据类型筛选时,由于参数typeId类型为字符串,在查询时,使用模糊查询<if test="typeId != null"> and type_ids like concat('%', #{typeId}, '%')</if>
并不能精准查询,比如我传过去的typeId为1,而数据库中type_ids存的是[12,13],结果他把id为12,13的也查出来了
解决:
FIND_IN_SET
用来解决字符串中逗号的问题,用于在逗号分隔的字符串中查找指定的值,并返回其在字符串中的位置
REPLACE
函数是 MySQL 中的字符串替换函数,其语法为 REPLACE(str, from_str, to_str)
,作用是将字符串 str
中所有的 from_str
替换为 to_str
。