繁体   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