一个比较复杂的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

回到顶部