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`**
由此可以得出,变通是多么重要,很多东西,不是你不会,而是想不到,用不上。。泪目。。
原文地址:https://www.cnblogs.com/missYuLan/p/6768893.html