在 Snowflake 中使用不区分大小写的列名解析 JSON 数据

Posted

技术标签:

【中文标题】在 Snowflake 中使用不区分大小写的列名解析 JSON 数据【英文标题】:Parse JSON data using case insensitive column names in Snowflake 【发布时间】:2021-07-16 05:16:46 【问题描述】:

我正在尝试解析 Json 文档并创建一个视图。在解析 JSON 时,我们可以使用不区分大小写的列名。有什么办法吗?

SELECT 
   parse_json(column1) AS json_data
FROM VALUES
   ('
      "ID": 1,
      "color": "black",
      "category": "hue",
      "type": "primary",
      "code": 
        "rgb": "255,255,255",
        "hex": "#000"
      
    ') as raw_json;

这将运行并提取数据, select json_data:ID::integer as ID from colors

这不会提取数据。有什么方法可以使下面也起作用吗? select json_data:id::integer as ID from colors

【问题讨论】:

【参考方案1】:

您可以将GET_IGNORE_CASE 用作:

SELECT  GET_IGNORE_CASE(to_object(json_data),'id')::integer  as ID1,
        GET_IGNORE_CASE(to_object(json_data),'ID')::integer  as ID2 
FROM
(
  SELECT 
     parse_json(column1) AS json_data
  FROM VALUES
     ('
        "ID": 1,
        "color": "black",
        "category": "hue",
        "type": "primary",
        "code": 
          "rgb": "255,255,255",
          "hex": "#000"
        
      ') as raw_json
  )

【讨论】:

以上是关于在 Snowflake 中使用不区分大小写的列名解析 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

podman mysql字段区分大小写吗

SQL Server 列名区分大小写

mysql中数据库名字分大小写吗?

防止 Sequelize 将列名用引号括起来

PostgreSQL 列名是不是区分大小写?

MySQL存储的字段是不区分大小写的,你知道吗?