2014-11-02 108 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