Mysql in 查询的奇怪方向
关于表字段存储的数据为 num1,num2,num3时, 还要通过多个num1,num2入参针对该字段进行查询
建表语句
CREATE TABLE `test` (
`test_ids` varchar(100) DEFAULT NULL COMMENT '保存ids 以逗号分隔'
) ENGINE=InnoDB;
数据项
查询语句
SELECT
test_ids
FROM
test
WHERE 1=1
AND test_ids in (2, 3)
查询结果
总结
test_ids存储的数据为字符串 num1,num2
搜索结果为
– test_ids中以2开头的,以3开头的
– 1,2,3不会进行匹配
如果要精准匹配 2,3 的话语句需要调整为
AND test_ids in ('2', '3')
或者
AND find_in_set(test_ids, '2,3') > 0
如果需要匹配所有包含2或者3的
AND (test_ids like '%2%' or test_ids like '%3%')
对应的Mybatis语句为
<if test="testIdList != null and testIdList.size() > 0 ">
and (
<foreach collection="testIds" item="testId" separator="or">
testIds like concat('%', #{testId}, '%')
</foreach>
)
</if>