是否有办法包装字符串与单引号在预置语句setString()?



我有这个列在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中,当字符串被包装在">

中时,

最新更新