3

我一直在尝试从包含一些 Json 对象的现有 MySQL 表中创建一个没有 Json 的新 MySQL 视图。表 1 是当前表。表 2 是从表 1 派生的新 MySQL 视图。表 2 的内容将始终反映表 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

数据流程是这样的:用户在任何时候都可以从第三方自定义表单中输入数据并保存到表1中。但是数据需要从表2格式中提取,也可以在任何时候。

我们如何仅使用 SQL 查询来实现这一点?先感谢您。这肯定会帮助许多开发人员应对 Json 作为新标准。干杯!

4

1 回答 1

2

假设上面的 table2,您可以使用相当难看的字符串函数组合来做到这一点:

SELECT user_id,name,
substring_index(substring(params,locate('age":"',params)+6),'"',1) as age 
from table_2

您可以遵循相同的性别模式。

根据 JSON 格式的一致性,这有点脆弱。

忘了说文档可以在以下位置查看:MySQL docs

于 2012-10-21T14:55:45.160 回答