我们的数据库中经常会遇到很多JSON的字段,自己写的也好,别人写的也好。一般我们取这个值的话,会创建一个typeHandler来取值。那么如果我们想直接取到JSON里的值该怎么办呢?其实很简单,SQL自带的函数就可以解决。
假如现在有一个字段叫
detial
,字段内容如下:
{"name":"Bruce","age":24,"gender":"男"}
那么我们取出name的话,写法如下:
select JSON_EXTRACT(detail, '$.name') from ...;
这样就可以直接取到JSON中的值了。
但这样取值有一个问题,就是取出来如果是字符串,字符串的两边会带有双引号。那么去掉双引号也很简单。写法如下:
select JSON_UNQUOTE(JSON_EXTRACT(detail, '$.name')) from ...;
即可取出我们要的名字。
如果是嵌套JSON的话,只需要加“.”即可,比如有一个字段detail,内容如下:
{"name":"Bruce","age":24,"gender":"男","favorite":{"read":"《时间简史》","sport":"双截棍"}}
要取出最喜欢的运动的话,像下面这样写就可以了:
select JSON_UNQUOTE(JSON_EXTRACT(detail, '$.favorite.sport')) from ...;
喜欢本文的朋友不要忘记点一个免费的赞哦,你的赞将是我最大的动力。
lsc.f_fee_json,
lsc.f_fee_json -> '$.GUARANTEE_FEE.amount' AS f_guarantee_fee,
lsc.f_fee_json -> '$.CONSULTING_SERVICE_FEE.amount' AS f_consulting_service_fee,
lsc.f_fee_json -> '$.SERVICE_FEE.amount' AS f_service_fee
t_lsc_repa.
从json格式字段中提取long型日期因数据统计的需求,笔者需要编写一条sql,用于在tbl_user_info表中某个json数据格式字段中提取姓名、时间等信息,该字段名为data_json,json数据格式如下:
id-自增编号
name-字符串
createdate-long型时间戳 数据示例:{“id”:12859701,”name”:”小编”,”createdate”:132014009
项目半夜凌晨宕机,报错Invalid character found in method name. HTTP method names must be tokens|the HTTP protoco
70767
代码中发送http请求, java.lang.IllegalArgumentException: Illegal character in query at index...,非法字符错误解决办法
64461
好累!iTunes安装不上,UNKNOW\Components...,以及注册表“注册表编辑器无法在当前所选的项及其部分子项上设置安全性”,注册表某项打不开、删不掉,所有问题,都在此终结!
29782
siliren:
JeecgBoot/SpringBoot之Swagger漏洞修复:/actuator、/v2/api-docs禁止访问
CSDN-Ada助手:
SpringBoot+MyBatis+Nacos配置多数据源,MySQL和Redis多数据源怎么配置
Counter-Strike大牛:
SpringBoot+MyBatis+Nacos配置多数据源,MySQL和Redis多数据源怎么配置
Simon_Kirito:
Win10锁屏之后屏幕自动关闭怎么办
Counter-Strike大牛: