对于JSON字符串的处理是MySQL5.7后支持的功能,在项目中主要用到了两个函数:
1. JSON_EXTRACT ( a,b ) 注:a为所需解析的字段值,b为取值表达式以$开头 '$.*' 为取出所有JSON串 ’$.key‘ 为取出特定的值 '$[n].key'为取出JSON数组中某个值 以此类推。
2. JSON_UNQUOTE(value) 注:使用此函数的主要原因是因为在上个函数取出的值中将""作为了字符串,此函数可以取出双引号并且将值转换为字符串。
示例:JSON串为
[{"form":"sj","name":"时间","type":"select","required":"true","value":"2020-02-14"},{"form":"remark","name":"备注","type":"text","required":"false","value":"上班"}}]
那么我们要取json数组中的时间2020-02-14就要这么写
SELECT JSON_UNQUOTE ( JSON_EXTRACT ( variant_value, '$[0].value' ) ) AS value FROM tablename
3.另外在sql中取出的JSON串的值是无法用于where语句后作为筛选条件的,如果是需要展示值得不同可以将查询出的结果集当作子表,用case函数来展示不同得值case函数得使用方法示例:
(1)select case colum when '1' then '男' when '2' then '男' else '..' end from ......
(2)select case when colum = '1' then '男' when colum = '2' then '男' else '..' end from ......
以上就是此次功能点中用到得在sql中对于JSON处理得主要方法记录一下已备查阅。