Java在查询mysql8.0时,sql条件中包含$符号,导致无法查询。求解!
数据库【sheet_data】表中字段“data”为JSON类型存储,数据格式为一个数组,
例:“[[1,2,3],[a,b,c]]”
sql为:
select s.data ,jt.name
from sheet_data s
,json_table(
s.data,
'$[*]' columns(
`group` varchar(50) path '$[0]',
`name` varchar(50) path '$[1]'
)) as jt
where id = 1
情况描述:
1)此条SQL直接在数据库中运行正常,但是通过程序无法执行,排查原因是 SQL条件及JSON_TABLE中不能包含“$”符号;
2)java查询使用了mybatis和jdbcTemplete两种方式查询,均不能通过;
3)但有一个奇怪的现象,公司安装的一个mysql8.0.31版本,此SQL通过程序[jdbcTemplete]方式正常查询,mybatis不行,但是本地8.0.32和服务器8.0.30两个mysql版本均不能查询,提示语法错误、字符错误;
4)个人猜测是数据库配置的问题,但又不知道哪里配置,网上完全没有资料显示;
5)查询是直接前端传递sql语句到数据库直接查询,请问这种情况如何处理?