mysql从json编码字段中选择指定的key_name和key_value

时间:2015-01-16 19:23:03

标签: php mysql regex json

我想用mysql显示字段的指定key_name和key_value,其中记录以json格式编码

id_user           dtl_master              date    
  1         {"el1":"2","el2":"3"}       2015/01/01
  2         {"el1":"2","el2":"3"}       2015/01/01 
  3         {"el1":"5","el2":"6"}       2015/01/01

我对过滤选择的查询是

SELECT id_user,dtl_master FROM tb_inputdata WHERE dtl_master REGEXP '"el2":"([^"]*)4([^"]*)"';

但它返回:

 id_user           dtl_master            
      1         {"el1":"6","el2":"4"}          

我想要像这样显示

 id_user              el2            
   1                   4     

我知道REGEXP没有在SELECT上运行,但只在WHERE上,有人知道如何只选择相关的key_name或key_value吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我建议去NoSQL但是你可以通过以下方式提取它:

SELECT id_user, common_schema.extract_json_value(dtl_master,'/el2') AS el2 WHERE dtl_master REGEXP '"el2":"([^"]*)4([^"]*)"';

如果您打算获得common_schema。安装文档here

但当然,您始终可以通过SELECT PREG_REPLACE()值来选择使用正则表达式。这在MySQL中也不是默认值;您需要获得this之类的内容。