很多情况下,数据库表字段内容会以json格式来存数据,如下图:
那么在我们需要查询上图中的content字段里面的某个字段的值时,需要怎么处理呢??
方法一:字符串截取的方式
利用SQL中的SUBSTR(字段名,m,n)函数来进行截取
select content,SUBSTR(content,20,10)
from med_user_service_records
where deleted_at is null
得到了如下结果,可以看出,这种方式查询数据极有可能不准确。除非每行记录的数据格式都是一致的情况下,才比较适用。
方法二:采用运算符的方式
还是用上述例子,我们想要查询content里面的“Execution_date”的键值,利用 -> 运算符提取
SELECT id,date_visit,content->>'$.Execution_date' Execution_date,content
FROM `med_user_service_records`
WHERE content like '%Execution_date%' AND deleted_at is null
查询结果如下: