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_data1995年——使用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”}'作为