最近做一个站内信的功能,站内信的内容字段包含换行符号\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}】元%';