2012-10-21 38 views
3

我一直试图从包含一些Json对象的现有MySQL表创建没有Json的新MySQL视图。表1是当前表格。表2是从表1派生的新的MySQL视图。表2的内容将始终反映表1的内容。区别仅在于结构。从包含一些Json对象的表中查看没有Json的MySQL查询

下面是我们的示例上下文的简化表,其中实际上有超过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作为新标准。干杯!

回答

2

您可以用字符串函数比较难看的组合做到这一点,假设你上面的表2:

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

您可以按照性别相同的模式。

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

忘了提及的文档可以在:MySQL docs

+0

谢谢比尔。即使它有点脆弱,它现在仍然有效。你是这个人!干杯! –