在项目中遇到了一个地方,需要把原先用Oracle写的sql改成MySQL的,然而里面就设计到了标题提到的regexp_replace函数。
我们的需求就是,要替换掉数据库中数据中的一些特殊字符,来和后台处理过特殊字符的数据进行比对,判断是否相同。
举个例子,数据库里面有一个字段的值是AB.C-D&V,后台通过处理,得到一个字符串为ABCDV,这个时候我们比较的结果肯定是不等的,所以我们要对数据库的值也进行一个处理。
MySQL直到8.0才出了regexp_replace函数,稳妥起见我们还是不要先用这么新的版本,所以只能通过别的方式来解决。
我的想法很简单,既然没有这个函数,我们就一直用replace替换,动态的生成你需要替换掉的字符,循环的用replace函数替换掉它们。
首先我们新建一张表,取名为mychar。在这表里我们主要存储我们需要替换掉的特殊字符。
字段 | 描述 |
---|---|
id | 主键(意思一下) |
old_char | 需要替换掉的字符 |
new_char | 替换成的字符 |
// 接下来我们就新建一个参数类,用来传入查询的参数
public class InChar {
private List<My