我在列b中有以下数据,这是表x的一部分。
Table x Column b
{"op":"&","c":[{"type":"date","d":">=","t":1459756800}],"showc":[true]}
{"op":"&","showc":[true],"c":[{"type":"date","d":">=","t":1460534400}]}
我尝试使用下面的查询表来提取我的数据但不起作用,因为时间戳位于不同的位置。
SELECT substring(Column b, 44 , 10)
FROM Table x
我如何才能提取时间戳。 非常赞赏
答案 0 :(得分:1)
这个答案适用于MySQL< 5.7,似乎5.7添加了json支持
本机查询不支持JSON解析,如果您尝试将此列解析为字符串,则会导致各种麻烦。问题的示例是由于不同的属性,字符串长度等而导致时间戳的值位置不同。
您需要通过脚本(php,...)或增加mysql功能来添加json解析支持
我从来没有使用它,但通用架构可以帮助你。我相信还有其他方法 https://code.google.com/archive/p/common-schema/
来自http://mechanics.flite.com/blog/2013/04/08/json-parsing-in-mysql-using-common-schema/的使用示例:
mysql> select common_schema.extract_json_value(f.event_data,'/age') as age,
-> common_schema.extract_json_value(f.event_data,'/gender') as gender,
-> sum(f.event_count) as event_count
-> from json_event_fact f
-> group by age, gender;