JSON路径表达式
适用于:砖的SQL砖运行时
一个JSON路径表达式是用来从一个JSON字符串使用提取值:操作符
参数
标识符:一个不分大小写JSON的标识符字段。
(场]
:将区分大小写字符串文字识别一个JSON。(*]
:确定JSON数组中的所有元素。(指数]
:一个整数文字识别基于JSON数组中的一个特定元素。
返回
一个字符串。
当一个JSON领域存在un-delimited零
值,您将收到一个SQL零
该列的值,而不是一个零
文本值。
您可以使用::操作符把值基本数据类型。
使用from_json函数将嵌套的成果转化为更复杂的数据类型,比如数组或结构。
笔记
您可以使用一个un-delimited标识符来引用一个JSON字段名称不包含空格,或特殊字符,没有相同的名称在不同的情况下。
使用一个分隔标识符,如果没有相同的名称在不同的情况下。
的(场]
符号总是可以被使用,但是需要你精确匹配的情况下。
如果砖SQL不能唯一地标识一个字段返回一个错误。如果没有找到匹配的任何领域砖SQL的回报零
。
例子
下面的例子使用中的数据创建语句示例数据。
提取使用标识符和分隔符
>选择生:老板,生:老板,生:【“主人”),生:【“主人”]从store_data;艾米艾米艾米零——使用引号转义特殊字符。引用是大小写不敏感的,当你使用引号。——使用括号来让他们区分大小写。>选择生:”邮政编码代码”,生:”邮政编码代码”,生:【“fb: testid”]从store_data;94025年94025年1234年
提取嵌套的字段
——使用点符号>选择生:商店。自行车从store_data;{“价格”:19.95,“颜色”:“红色”}”——使用括号>选择生:【“存储”][“自行车”]从store_data;{“价格”:19.95,“颜色”:“红色”}”
从数组中提取值
——指数>元素选择生:store.fruit[0],原料:store.fruit store_data [1];{“重量”:8,“类型”:“苹果”}”“{“重量”:9,“类型”:“梨”}”——从数组中提取子域>选择生:store.book [*]。从store_data isbn;(null,“0-553-21311-3”,“0-395-19395-8”]”——访问数组在数组或结构体数组内>选择生:商店。篮子[*],生:商店。篮子(*](0] first_of_baskets, raw:store.basket[0][*] first_basket, raw:store.basket[*][*] all_elements_flattened, raw:store.basket[0][2].b subfield FROM store_data; basket first_of_baskets first_basket all_elements_flattened subfield ---------------------------- ------------------ --------------------- --------------------------------- ---------- [ [ [ [1,2,{"b":"y","a":"x"},3,4,5,6] y [1,2,{"b":"y","a":"x"}], 1, 1, [3,4], 3, 2, [5,6] 5 {"b":"y","a":"x"} ] ] ]
空的行为
>选择”{零}“关键”:“:关键是零sql_null,”{“关键”:“零”}’:关键是零;真正的假
把值
——返回价格翻倍,不是一个字符串>选择生:商店。自行车。价格::双从store_data19。95年——使用from_json转换为更复杂的类型>选择from_json(生:商店。自行车,“价格翻倍,颜色字符串”)自行车从store_data{“价格”:19.95,“颜色”:“红色”}”——列返回一个字符串数组的数组>选择from_json(生:商店。篮子(*),“数组<数组<字符串> >”)篮子从store_data”((“1”、“2”、“{\ b \”: \“y \”, \“\”, \“x \ "})”,(“3”、“4”)(“5”、“6”)]“
示例数据
创建表store_data作为选择”{“存储”:{“水果”:[{“重量”:8,“类型”:“苹果”},{“重量”:9,“类型”:“梨”}),“篮子”:((1、2、{“b”:“y”,“一个”:“x”}),(3、4),(5、6)),“书”:({奈杰尔•里斯”“作者”:““标题”:“世纪语录”,“类别”:“引用”,“价格”:8.95},{“作者”:“赫尔曼·麦尔维尔”,“标题”:“白鲸记”,“类别”:“小说”,“价格”:8.99,“isbn”:“0-553-21311-3”},{“作者”:“J。r·r·托尔金”,“标题”:“指环王”,“类别”:“小说”,“读者”:({“年龄”:25岁的“名称”:“bob”},{“年龄”:26日,“名字”:“杰克”}),“价格”:22.99,“isbn”:“0-395-19395-8”}),“自行车”:{“价格”:19.95,“颜色”:“红色”}},“老板”:“艾米”,“邮政编码”:“94025”,“fb: testid”:“1234”}'作为生