最近做一个站内信的功能,站内信的内容字段包含换行符号\n ,功能上又包含like,用户输入又不会输入换行符。
站内信内容如下:
您成功参与了【{userNick}】发起的拼团成为了团长 \n 邀请用户参团可赚【{money}】元
问题
包含换行符、空格、一些特殊字符,怎么like搜索
解决方式
- 代码过滤用户输入的空格字符
- 使用MySQL的
REPLACE关键字 - 结合
MyBatis Plus实战
// 过滤搜索内容中的空格
String content = StringUtils.replace(reqQuerySiteMailTemplateVo.getContent(), " ", "");
// mybatis 拼接条件
if (StringUtils.isNotEmpty(reqQuerySiteMailTemplateBo.getContent())) {
wrapper.apply("REPLACE(REPLACE(REPLACE(content, char(13), ''), char(10), ''),' ', '') LIKE '%" + reqQuerySiteMailTemplateBo.getContent() + "%'");
}
// 最后执行的sql
SELECT REPLACE
( REPLACE ( content, CHAR ( 13 ), '' ), CHAR ( 10 ), '' )
FROM
`site_mail_templates`
WHERE
REPLACE ( REPLACE ( REPLACE ( content, CHAR ( 13 ), '' ), CHAR ( 10 ), '' ), ' ', '' ) LIKE '%您成功参与了【{userA}】发起的拼团成为了团长邀请用户参团可赚【{money}】元%';
ASCII表


本文介绍了在开发站内信功能时遇到的问题,即如何处理内容中包含换行符并实现LIKE搜索。通过使用StringUtils替换空格,并在MySQL中利用REPLACE关键字来过滤和匹配含有特殊字符的搜索内容,实现了有效的搜索功能。示例代码展示了如何在MyBatisPlus中应用这些方法来构造SQL查询。
1736

被折叠的 条评论
为什么被折叠?



