mysql5.7.23使用JSON_EXTRACT函数后返回结果集为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql5.7.23使用JSON_EXTRACT函数后返回结果集为空相关的知识,希望对你有一定的参考价值。
参考技术A版本5.7.27 试过没问题
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函数后返回结果集为空的主要内容,如果未能解决你的问题,请参考以下文章