TO_JSON 函数

概述

TO_JSON
TO_JSON
函数用于将指定的表达式(expr)转换为 JSON 格式的文本。该函数能够处理各种数据类型,并将它们映射到相应的 JSON 类型。这对于在 SQL 查询中处理和输出 JSON 数据非常有用。

类型映射关系

以下是 LakeHouse 数据类型与 JSON 类型之间的对应关系:

  • struct
    struct
    map
    map
    :转换为 JSON 对象(object)
  • array
    array
    :转换为 JSON 数组(array)
  • tinyint
    tinyint
    smallint
    smallint
    int
    int
    bigint
    bigint
    float
    float
    double
    double
    :转换为 JSON 数值(numeric)
  • boolean
    boolean
    :转换为 JSON 布尔值(boolean)
  • string
    string
    :转换为 JSON 字符串(string)
  • date
    date
    datetime
    datetime
    :转换为 JSON 字符串,格式为日期或日期时间
  • null
    null
    :转换为 JSON null 值

需要注意的是,对于

decimal
decimal
类型,在转换为 JSON 时会以
double
double
类型输出,可能会丢失精度。此外,对于
map<K, V>
map<K, V>
类型,如果 K 不是
string
string
char
char
varchar
varchar
类型,系统会先将其转换为字符串形式,再进行输出。这是因为 JSON 对象的键(key)必须为字符串类型。

函数语法

TO_JSON(expr)

参数说明

  • expr
    expr
    :任意类型的表达式。

返回结果

  • 返回类型:字符串(string)

使用示例

以下示例展示了如何使用

TO_JSON
TO_JSON
函数处理不同类型的数据:

  1. 将数组映射为 JSON 对象:

    SELECT TO_JSON(MAP(ARRAY(1, 2), 2)); -- 输出:{"[1,2]":2}

  2. 将 JSON 字符串直接输出:

    SELECT TO_JSON(JSON '{"a": 1}'); -- 输出:{"a": 1}

  3. 将结构体转换为 JSON 对象:

    SELECT TO_JSON(NAMED_STRUCT( 'id',1, 'name','John Doe' )); -- 输出:{"id":1,"name":"John Doe"}

  4. null
    null
    值转换为 JSON null:

    SELECT TO_JSON(NULL); --输出空字符串 +---------------+ | TO_JSON(NULL) | +---------------+ | | +---------------+

通过以上示例,您可以看到

TO_JSON
TO_JSON
函数在处理不同类型的数据时的灵活性和实用性。这使得在 SQL 查询中处理 JSON 数据变得更加简单和高效。

联系我们
预约咨询
微信咨询
电话咨询