我一直在尝试从包含一些 Json 对象的现有 MySQL 表中创建一个没有 Json 的新 MySQL View 。表 1 是当前表。表 2 是从表 1 派生的新 MySQL View 。表 2 的内容将始终反射(reflect)表 1 的内容。区别只是结构。
下面是我们示例上下文的简化表格,其中实际有 20 多列。
表 1(3 列)
user_id | name | params
---------------------------------------------
1 | john |{"age":"26","gender":"male"}
2 | amy |{"age":"28","gender":"female"}
表 2(4 列)
user_id | name | age | gender
-----------------------------
1 | john | 26 | male
2 | amy | 28 | female
数据流是这样的: 在任何时候,用户从第 3 方自定义表单中键入数据并保存到表 1 中。但是,数据也需要随时从表 2 格式中提取。
我们如何仅使用 SQL 查询来实现这一目标?先感谢您。这肯定会帮助许多开发人员应对 Json 作为新标准。干杯!
最佳答案
你可以用一个相当丑陋的字符串函数组合来做到这一点,假设你的表是上面的:
SELECT user_id,name,
substring_index(substring(params,locate('age":"',params)+6),'"',1) as age
from table_2
您可以遵循相同的性别模式。
根据 JSON 格式化的一致性,这有点脆弱。
忘记提及文档可以在以下位置查看:MySQL docs
关于包含一些 Json 对象的表中没有 Json 的 MySQL View 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998610/