一个比较复杂的SQL匹配字符串的问题
技术背景:Java ,MySql,ORM框架是MyBatis-Plus
问题场景:
`老师选修课,选修课专门有一个字段condition(varchar(256)), 里面用逗号拼接可报名的必修课,然后用户有一个cond字段(varchar(256)),
现在需要用QueryWrapper来写一个SQL`
我的疑惑:
比如有一个大学钢琴选修课,它的condition是语文,音乐,英语。说明学生只要必修过语文,音乐和英语任意一个,都可以选修大学钢琴课。
用SQL中来匹配单个字符是有方法的,比如find_in_set,locate
select * from college_course where find_in_set('音乐', condition);
select * from college_course where locate('音乐', condition);
但我的cond是多个的,比如 cond=语文,音乐
如何让condition 中 可以匹配到cond以,分隔的 语文和音乐
另外如何应用到Mybatis-Plus中,写道QueryWrapper中去
希望别告诉我用like,就是因为like太差才想其他办法的
两个问题:
1-如何从SQL上实现 condition匹配以,为分隔字符串中的任意一个,只要匹配到任意一个就行2-如何应用到Mybatis-Plus中去
回答:
多个也很简单的啊
find_in_set('语文', condition) AND find_in_set('音乐', condition)
不就好了吗?
其实你做个全文索引的话就可以:
MATCH(condition) AGAINST('语文') AND MATCH(condition) AGAINST('音乐')
就挺快的
以上是 一个比较复杂的SQL匹配字符串的问题 的全部内容, 来源链接: utcz.com/p/944454.html