2014-11-02 89 views
0

我正在处理一个表,其中的信息以JSON格式存储在表中。 JSON值字段如下所示:MySQL查询返回json名称值

select * from k2_extra_fields where id = 2 and published = 1;在由线视图(减去ID)的简单的线

id | value   
2,[{"name":"Apples","value":1,"target":null,"alias":"","required":0,"showNull":1},{"name":"Pears","value":2,"target":null,"alias":"","required":0,"showNull":1},{"name":"Mangos","value":3,"target":null,"alias":"","required":0,"showNull":1},{"name":"Guava","value":4,"target":null,"alias":"Fruit","required":0,"showNull":1},{"name":"Pineapple","value":5,"target":null,"alias":"Fruit","required":0,"showNull":1}] 

或值:

[ 
    {"name":"Apples","value":1,"target":null,"alias":"","required":0,"showNull":1}, 
    {"name":"Pears","value":2,"target":null,"alias":"","required":0,"showNull":1}, 
    {"name":"Mangos","value":3,"target":null,"alias":"","required":0,"showNull":1}, 
    {"name":"Guava","value":4,"target":null,"alias":"Fruit","required":0,"showNull":1}, 
    {"name":"Pineapple","value":5,"target":null,"alias":"Fruit","required":0,"showNull":1} 
] 

导致我在这里返回3. 3 =芒果值的查询。我如何获取'3'值并将其与存储的名称/值进行匹配,以便最终得出输出Mangos?

+0

我有点困惑。你的预期产出是多少?只是'芒果'这个词? – AdamMc331 2014-11-02 18:38:11

+0

是的,芒果。从以前的查询中,我可以得到与芒果相对应的“3”的值。然而,你如何做的查询需要3,匹配正确的JSON格式的字段为3,并拉出芒果?这可能是PHP或MySQL。 – 2014-11-02 21:44:15

回答

0

它应该有可能与建立在MySQL功能,但非常困难和'不聪明'的想法。如果你真的需要在mysql中计算这个问题,你需要实际添加新的功能到你的mysql中。看看UDF插件:http://dev.mysql.com/doc/refman/5.1/en/udf-compiling.html

+0

谢谢,但这将超出我的技能;怎么样一个PHP选项?你将如何处理一个函数或一些与'3'匹配的语句,并提取'Mangos'作为输出?必须有一个功能来处理这个问题。基于“价值”上的一些模式匹配来写一个复杂的oneoff:3并且周围的{}之间的所有内容似乎相当低效。 – 2014-11-04 03:31:39

+0

PHP变体:http://pastebin.com/cF52srdm;提示 - 一旦你用php解析它,你可以把它全部写入一个新的mysql表格。但是,每次获得新的json字符串时,您都需要重新运行脚本来更新此表。 – David162795 2014-11-04 08:30:28

+0

我测试了你的代码;这是一般的想法。我应该能够弄清楚如何通过'3'或其他任何代码;这是对我的。这里有一些背景 - 我使用Joomla CMS并使用其中一个名为K2的扩展; K2的展示并不总是符合我们的需求,所以我偶尔会编写PHP脚本以满足需要。 K2的额外字段数据对管理内容非常有用,它以JSON格式存储。能够推出我自己的演示文稿将大有帮助。 – 2014-11-05 00:33:17