mysql5.7.23使用JSON_EXTRACT函数后返回结果集为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql5.7.23使用JSON_EXTRACT函数后返回结果集为空相关的知识,希望对你有一定的参考价值。

参考技术A

版本5.7.27 试过没问题

参考技术B 结尾加个分号试试? 参考技术C create table test_table(id int,name json);
insert into test_table values (1,'
    "name":"张三",
    "age":23,
    "base":
        "userName":"zhangsan",
        "passworld":"test"
        
    '
);
--查询json字符串的深度
select json_depth(name) from test_table; 
--查询json的长度(键值对的数量)
select json_length(name) FROM test_table;
--查询json的类型
select json_type(name) from test_table; 
--验证json
SELECT JSON_VALID(‘hello’) a;
--查询json的key(返回array)
select json_keys(name) jsons from test_table;
--查询json中键为base的对象的键
select json_keys(name,'base') from test_table;
--查询‘张三’第一次出现的位置
select json_search(name,'one','zhangsan') json from test_table;
--返回所有包含123的位置
select json_search(name,'all','%123%') json from test_table;

将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery

【中文标题】将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery【英文标题】:Convert query with JSON_EXTRACT from MySQL to BigQuery 【发布时间】:2019-02-05 08:51:02 【问题描述】:

我在 MySQL 上有以下查询:

    SELECT COALESCE(
                TRIM(BOTH '"' FROM JSON_EXTRACT(fb.p_dataforanalytics,'$.gender')),   
                TRIM(BOTH '"' FROM JSON_EXTRACT(g.p_dataforanalytics,'$.gender'))                                                       
                ) as chosen_gender
   FROM ...

这适用于 MySQL,但不适用于 BigQuery:

语法错误:应为 ")" 但得到字符串文字 '"'

TRIM/JSON_EXTRACT 存在一些问题。

如何在 BigQuery 中执行此操作?

【问题讨论】:

【参考方案1】:

假设 gender 键指向单个标量值,那么 BigQuery 的 JSON_EXTRACT_SCALAR 函数可能就是您需要的:

SELECT
    COALESCE(JSON_EXTRACT_SCALAR(fb.p_dataforanalytics, "$.gender"),
             JSON_EXTRACT_SCALAR(g.p_dataforanalytics, "$.gender")) AS chosen_gender
FROM yourTable;

从documentation 开始,应该不需要修剪双引号,因为它们不会出现在输出中。

【讨论】:

以上是关于mysql5.7.23使用JSON_EXTRACT函数后返回结果集为空的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu18.04编译安装mysql5.7.23

史上Mysql5.7.23最详细教程(CentOS7)

MySQL5.7.23解压版安装教程

centos7.1上安装Mysql5.7.23

mysql5.7.23主从安装部署,并开启GTID

生产环境可用mysql5.7.23安装全过程