我在雅典娜有一张这样的table
CREATE EXTERNAL TABLE `json_test`(
`col0` string ,
`col1` string ,
`col2` string ,
`col3` string ,
`col4` string ,
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'quoteChar'='\"',
'separatorChar'='\;')
类似这样的json字符串存储在“col4”中:
{'email': 'test_email@test_email.com', 'name': 'Andrew', 'surname': 'Test Test'}
我´我正在尝试进行json提取查询:
SELECT json_extract(col4 , '$.email') as email FROM "default"."json_test"
但是查询返回空值。
任何帮助都将不胜感激。
2条答案
按热度按时间hc8w905p1#
json需要使用双引号(
"
)用于封闭值。比较:
和
(注:
''
内部sql varchar literal mean single'
在构造的值中,因此这里的文本与问题中的格式相同。)如果您的字符串值是“带单引号的json”,您可以尝试用
replace(string, search, replace) → varchar
vngu2lb82#
问题是存储的json字符串的单引号字符
更改为双引号
雅典娜查询正常工作: