我们有时候在sql查询的时候会对json数据比较头疼,有时候会通过mybatis进行转换成string来进行处理,但是在mysql5.7以及就开始支持对json的解析处理了,这里我们聊一下今天用到的JSON_EXTRACT
select * from AAA fm where JSON_EXTRACT(CAST(fm.content AS CHAR), '$.headerTitleType_.name') = '查询的内容'
注意
报错:
Data truncation: Cannot create a JSON value from a string with CHARACTER SET ‘binary’.
这里为什么在JSON_EXTRACT的第一个参数使用CAST将json转成char,是因为虽然我们使用了mysql5.7以上的版本号,但是还是会把JSON类型数据当成String类型进行处理,导致没办法解析一般会报上面的那行错,
第二个参数’$.headerTitleType_.name’这个是json里面要获取值的路径,这里的意思就是,获取json里面headerTitleType_对象里面的name值大概的json格式是:{“headerTitleType_”:"{“name”:“123”}"}