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”}'作為