我一直试图在没有Json的情况下从包含一些Json对象的现有MySQL表创建一个新的MySQL视图。表1是当前表。表2是从表1派生的新MySQL视图。表2的内容将始终反映表1的内容。区别仅在于结构。
下面是我们的示例上下文的简化表,其中实际上有超过20列。
user_id | name | params
---------------------------------------------
1 | john |{"age":"26","gender":"male"}
2 | amy |{"age":"28","gender":"female"}
user_id | name | age | gender
-----------------------------
1 | john | 26 | male
2 | amy | 28 | female
数据流如下: 用户可以随时键入来自第三方自定义表单的数据并保存到表1中。但是,数据也需要从表2格式中提取,也可以随时提取。
我们如何只使用SQL查询来实现这一目标?先感谢您。这肯定会帮助许多开发人员应对Json作为新标准。干杯!
答案 0 :(得分:2)
你可以用一个相当难看的字符串函数组合来做到这一点,假设你的table2在上面:
SELECT user_id,name,
substring_index(substring(params,locate('age":"',params)+6),'"',1) as age
from table_2
您可以按照相同的性别模式。
根据您对JSON格式的一致性,这有点脆弱。
忘记提及文档可以在MySQL docs
查看