我想在MYSQL Trigger中解析JSON格式
{"multicast_id":67784038XXXXXX,"success":1,"failure":0,"canonical_ids":0,"results":
[{"message_id":"0:13XXXX280085815%XXXXXXXXX"}]}
实际上我将其作为我的一个应用程序的响应并存储在一个表中( tbl1 ),所以我要做的是在该表创建一个触发器( tbl1 )并解析上面的响应并在另一个表中插入相应的条目( tbl2 )
需要在MYSQL Trigger中解析上面的json格式,以便我将分别获取所有参数。怎么办呢?
答案 0 :(得分:7)
您可以安装common_schema。然后你应该可以做这样的事情:
select common_schema.extract_json_value(d.table1,'/multicast_id') as multicase_id,
common_schema.extract_json_value(d.table1,'/success') as success,
common_schema.extract_json_value(d.table1,'/failure') as failure,
common_schema.extract_json_value(d.table1,'/canonical_ids') as canonical_ids,
common_schema.extract_json_value(d.table1,'/results') as results,
common_schema.extract_json_value(d.table1,'/message_id') as message_id
from database d;
答案 1 :(得分:1)
在应用程序的数据库模型中添加代码。 PHP有一个很好的内置函数来解析JSON,而这对于MySql来说不是一个工作。
无论如何,将原始JSON存储在表中是错误的,因为它违背了关系数据库的目的。除非您将JSON字符串视为原始字符串,并且不关心其在数据库级别的含义。事实并非如此。
所以甚至不用担心存储JSON字符串。从PHP解析并将数据直接存储到tbl2
。使用PHP从表中重建JSON字符串非常简单且几乎是即时的(与从数据库中检索数据所需的时间相比)。