关于mysql数据库5.7版本及以上版本,数据库字段类型为json类型,如何将json数据转成特定的列做关系数据查询

原创
2020/04/15 15:42
阅读数 217

1.说明:数据库总字段类型为json类型,目前采用 JSON_EXTRACT该方法对该字段转成数据库列进行显示,然后用REPLACE方法替换字符串的值,并对当前值进行修改,变更成想要的特定列,我遇到的需求,主要因为还有特定列的字段数据,直接存入的json字段中,导致需要对特定json字段进行解析的时候,无法直接通过sql进行直接判断,因此,找到此种解决方案,目前问题算是解决了。

select
    coalesce(
        sum( p.policy_num ),
        0
    ) as policyNum
from
    order_policy p
left join(
        select
            order_id as orderId,
    REPLACE (
        JSON_EXTRACT (subject_json, '$.carNo'),
        '"',
        ''
    ) AS 'carNo',
    REPLACE (
        JSON_EXTRACT (subject_json, '$.SeatNumber'),
        '"',
        ''
    ) AS 'seatNumber',
    REPLACE (
        JSON_EXTRACT (subject_json, '$.carFrameNo'),
        '"',
        ''
    ) AS 'carFrameNo'
        from
            order_insured
    ) as a on
    p.id = a.orderId
where
    1 = 1
    and p.product_id = 94
    and p.order_pay_status = 1
    and a.carNo = 545
    and p.order_status in(2,3,5)
    and unix_timestamp(#{startTime}) <![CDATA[>=]]> unix_timestamp(p.start_time)
    and unix_timestamp(#{startTime}) <![CDATA[<=]]> unix_timestamp(p.end_time)

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部