我的json字段中有一个“〜”,例如“~id”。使用Presto 0.75,我无法访问这些字段。以下是我迄今为止没有成功的尝试:
SELECT json_extract_scalar('{“id”:“1”,“table”:“test”}','$ .table'); //这有效吗
SELECT json_extract_scalar('{“id”:“1”,“〜table”:“test”}','$。[\“~table \”]'); //不起作用
SELECT json_extract_scalar('{“id”:“1”,“〜table”:“test”}','$。[\〜table]'); //不起作用
给出的错误是“无效的JSON路径:”
答案 0 :(得分:7)
该JSON路径的正确格式为:'$["~table"]'
:
presto> SELECT json_extract_scalar('{"id":"1","~table":"test"}', '$["~table"]');
_col0
-------
test
(1 row)
以下是一些可以帮助您了解为什么您尝试过的替代方案不起作用的事实:
'don''t'
是don't
的SQL字符串文字。 SQL字符串文字中的双引号不需要转义。'$["foo"]'
或'$.foo'
访问该属性。字段访问语法仅适用于有效标识符(字母数字和下划线)的名称。