【发布时间】:2015-01-16 19:23:02
【问题描述】:
我想用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 吗?
谢谢
【问题讨论】:
-
还有大量数据,我应该将每一对变量和值保存在同一个字段上,所以现在 json 格式是解决方案
-
如果您的应用程序手动对内容进行编码并将其放入数据库中,那么您的应用程序逻辑本身也必须注意再次展开它。
-
糟糕的设计,但是在从结果中获取行时只使用
json_decode并使用el2。 -
您好,出于某种原因(内存和效率),我不想在应用程序(php)中显示和解析它,我首先尝试在 mysql 上执行此操作