簡體   English   中英

我如何從 SNOWFLAKE 的 SQL 表中的 json 字段中選擇某些鍵/值對

[英]how do i select certain key/value pair from json field inside a SQL table in SNOWFLAKE

我目前正在為我工作的企業在雪花中構建一個數據倉庫,我遇到了一些問題。 我曾經在 TSQL 中應用函數 Json_value 從我原來的 MSSQL 數據庫中的 json 格式字段中提取某些鍵/值對。

所有其他字段都采用常規 SQL 格式,但有一個字段是我真正需要的,它采用 JSON 格式,我似乎無法確定我需要的鍵/值對。

我是 SnowSQL 的新手,我似乎找不到在常規查詢中提取它的方法。 有誰知道解決我的問題的方法?

* ID /// 類型 /// 名稱 (JSON_FORMAT)/// 金額 *

  1          5         {En: "lunch, fr: "diner"}        10.00

我想提取這一行(例如)並且只能從我的 JSON 格式字段中檢索 EN: "lunch" 部分。

謝謝 !

幾乎任何時候在 Snowflake 中使用 JSON 時,都建議使用 VARIANT 數據類型。 您可以使用 parse_json function 將字符串轉換為帶有 JSON 的變體。

select 
parse_json('{En: "lunch", fr: "diner"}') as VARIANT_COLUMN,
VARIANT_COLUMN:En::string as ENGLISH_WORD;

在此示例中,第一列將您的 JSON 轉換為名為 VARIANT_COLUMN 的變體。 第二列使用變體,提取“En”屬性並將其轉換為字符串數據類型。

您可以將列定義為變量並本地存儲 JSON。 這將提高性能並允許在 SQL 中使用點符號進行解析。

對於也偶然發現這個問題的其他人:

您還可以使用 JSON_EXTRACT_PATH_TEXT。 這是一個示例,如果您想創建一個名為 meal 的新列。

    select json_extract_path_text(Name,'En') as meal from ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM