我有这个列在MySQL表有一个JSON字符串,我试图使用正则表达式拉记录。例如,列'paylod'(数据类型长文本)保存这个值
{
"type":"assignment",
"location":"12345"
}
我正在使用RLIKE基于位置获取记录。
select * from table where payload RLIKE '"location":"[[:<:]]12345[[:>:]]"';
当在java中使用这个查询时,我使用的是准备好的语句。
String pattern = ""location":"[[:<:]]12345[[:>:]]""
当我使用preparedStatement.setString(payload, pattern)
时,我没有得到任何结果。但是,当我在工作台中执行查询时,我看到已获取的行。
我猜这是因为我使用setString,它是包装模式与双引号和MySQL是无法解析它。
那么有前进的道路吗?我的要求是根据JSOn有效负载列中的键值对获取记录。
好的,在字符串中添加转义字符有帮助。
String pattern = "'"location'":'"[[:<:]]12345[[:>:]]'"";
String patternValue = pattern.replaceAll("'","\\");
因此字符串变成"location":"[[:<:]]12345[[:>:]]"
,其中用作"的转义字符;在mysql中,当字符串被包装在">