我想用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 上运行,有人知道如何仅 SELECT 相关的 key_name 或 key_value 吗?
谢谢
最佳答案
我建议使用 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 的东西.
关于php - mysql 从 json 编码字段中选择指定的 key_name 和 key_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991265/