MAPTOSTRING

递归地构建 VMap 数据的字符串表示形式,包括嵌套 JSON 映射。使用此转换函数以 LONG VARCHAR 格式显示 VMap 内容。在使用 MAPVALUES 查询虚拟列之前,您可以使用 MAPTOSTRING 查看映射数据是如何嵌套的。

语法

MAPTOSTRING ( VMap-data [ USING PARAMETERS param=value ] )

参数

VMap-data

任何 Vmap 数据。Vmap 的存在形式可以是:

  • Flex 表的 __raw__

  • 从映射函数返回的数据(示例) MAPLOOKUP

  • 其他数据库内容

参数

canonical_json
布尔值,是否生成规范化 JSON 格式,使用映射数据中任何重复键的第一个实例。如果为 false,则该函数返回重复键及其值。

默认值: true

示例

以下示例使用此表定义和示例数据:

=> CREATE FLEX TABLE darkdata();
CREATE TABLE

=> COPY darkdata FROM stdin parser fjsonparser();
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> {"aaa": 1, "aaa": 2, "AAA": 3, "bbb": "aaa\"bbb"}
>> \.

使用默认值 canonical_json 调用 MAPTOSTRING 仅返回重复键的第一个实例:

=> SELECT MAPTOSTRING (__raw__) FROM darkdata;
                        maptostring
------------------------------------------------------------
 {
   "AAA" : "3",
   "aaa" : "1",
   "bbb" : "aaa\"bbb"
}
(1 row)

canonical_json 设置为 false,函数返回所有键,包括重复键:

=> SELECT MAPTOSTRING(__raw__ using parameters canonical_json=false) FROM darkdata;
                          maptostring
---------------------------------------------------------------
 {
        "aaa":  "1",
        "aaa":  "2",
        "AAA":  "3",
        "bbb":  "aaa"bbb"
 }
(1 row)

另请参阅