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