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

标签 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 上运行,有人知道如何仅 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 .

但当然,您始终可以通过 SELECTPREG_REPLACE() 值来使用正则表达式进行选择。这也不是 MySQL 独有的默认设置;你需要得到类似 this 的东西.

关于php - mysql 从 json 编码字段中选择指定的 key_name 和 key_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991265/

相关文章:

php - 检索数据库 wordpress 中的序列化值

Php PDO 想要从 2 列中获取值并创建数组(一列值作为键,另一列作为数组)

mysql - 在 mySql 中也有 group_concat 的计算字段上排序

mysql - _mysql_exceptions.ProgrammingError : (1064, “你的 SQL 语法有错误;

php - 用于返回所有可能的顺序单词分组的正则表达式

php - Laravel 4 - 如何插入多个模型?

php - 我怎样才能加快 Composer 的安装速度?

mysql - 用依赖 MySQL 中其他 5 个表的数据填充表

java - 如何开始使用 java 从特定行读取文本文件

java - 正则表达式贪婪匹配选择整行