• 0426_mysql?jq?json


    为了便于业务拓展,比如说,现在的平台是一个卖车险,卖车票,卖流量。。各种都卖的商城,所以,有些业务就很重复,比如,过程都是客户在平台上提交个人信息和需求,形成一个初始的订单,然后后台再处理这个订单,然后再确认。。。基于此,有人提出建一个公共订单表,包含这些业务订单的公共字段(类型,状态,销售价,订单号),还设有一个json字段,专门处理不同订单的特有内容。这个又要说到mysql去年的更新了,去年,mysql开始支持json字段的使用。这很符合我们现有的开发场景,所以这次做车险就都改用这种思路。以下,是我注意到的几个点:
    1.更新tomcat下的mysql-connector-java-5.1.40.jar
    tomcat的安装路径-->lib 替换更新
    2 查询语句的细微区别
    c.order_content->'$.mobile' 访问json 列里面的value
    3 与jq结合,去掉查询结果的双引号

    	*
    FROM
    	(
    		SELECT
    			c.id id,
    			c.order_no order_no,
    			c.order_content ->> '$.ownerName' car_owner_name,
    			c.order_content ->> '$.plateNo' vehicle_no,
    			c.order_content ->> '$.mobile' mobile,
    			c.order_status order_status,
    			c.sale_price sale_price,
    			c.cost_price cost_price,
    			c.create_time create_time,
    			c.order_content ->> '$.isSendSupplier' is_send_supplier
    		FROM
    			common_order_info c
    		WHERE
    			1 = 1
    	) temp_order
    ORDER BY
    	create_time DESC
    LIMIT 20```
    最开始的时候,其实用的是table.json字段名->'$key'来查询value 值,后来发现json_extract(c.order_content, '$.ownerName')同样可以,但是查询结果,如果是字符串的话就会带双引号!!!
    结果如下:
    ![search](http://images.cnblogs.com/cnblogs_com/missYuLan/991726/o_233.png)
    对的,->>比->少显示了一个双引号,查询结果就正常显示了,但是,如果你放到jq 里面结合使用,就会发现,出现乱码了。。。。。。。。。。。。。。。。。。。。。
    而且我特意在impl层里面去查看了list的查询结果,发现debugger里面居然相关字段是空的!真像灵异事件。。。。。。。
    事实的确是这样:
    ![webResult](http://images.cnblogs.com/cnblogs_com/missYuLan/991726/o_322.png)
    醉了,起先我的解决方法是,在js里面写formatter方法,用replace方法把“干掉,,这种搞法的确很low
    后来机智的同事帮我找出解决方法:
    用**`cast(c.order_content->>'$.ownerName' as char)car_owner_name`**
    由此可以得出,变通是多么重要,很多东西,不是你不会,而是想不到,用不上。。泪目。。
  • 相关阅读:
    支付包接口支付缓存问题
    vue多层弹框时存在遮挡应如何解决
    P1520 因式分解 题解
    观测概率为多维高斯分布时对两(多)类MAP决策边界的分析
    关于因数个数的估计
    使用ITTP_Stream显示图像
    linux某个目录没有可执行权限
    linux ldd命令
    注意力机制
    transformer
  • 原文地址:https://www.cnblogs.com/missYuLan/p/6768893.html
Copyright © 2020-2023  润新知