前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL函数 JSON_OBJECT

SQL函数 JSON_OBJECT

作者头像
用户7741497
发布2022-04-06 16:29:01
2.8K0
发布2022-04-06 16:29:01
举报
文章被收录于专栏:hml_知识记录

SQL函数 JSON_OBJECT

将数据作为JSON对象返回的转换函数。

大纲

代码语言:javascript
复制
JSON_OBJECT(key:value [,key:value][,...] [NULL ON NULL | ABSENT ON NULL])

参数

  • key:value - 键:值对或逗号分隔的键:值对列表。键是由单引号分隔的用户指定的文字字符串。值可以是列名、聚合函数、算术表达式、数字或字符串文字或文字NULL
  • ABSENT ON NULL NULL ON NULL - 可选-指定如何在返回的JSON对象中表示空值的关键字短语。NULL ON NULL(缺省值)表示带有单词NULL(未引号)的NULL(缺少)数据。在NULL上缺失将从JSON对象中省略NULL数据;当valueNULL且不保留占位符逗号时,它将删除key:value对。此关键字短语对空字符串值没有影响。

描述

JSON_OBJECT接受逗号分隔的键:值对列表(例如,‘MyKey’:colname),并返回包含这些值的JSON对象。可以指定任何单引号字符串作为键名;JSON_OBJECT不强制任何命名约定或对键名进行唯一性检查。可以为值指定列名或其他表达式。

JSON_OBJECT可以在SELECT语句中与其他类型的SELECT-Items结合使用。可以在可以使用SQL函数的其他位置指定JSON_OBJECT,例如在WHERE子句中。

返回的JSON对象格式如下:

代码语言:javascript
复制
{ "key1" : "value1" , "key2" : "value2" , "key3" : "value3" }

Json_object以字符串(用双引号括起来)或数字形式返回对象值。数字以规范格式返回。数字字符串以文字形式返回,用双引号括起来。所有其他数据类型(例如,DATE$LIST)都以字符串形式返回,当前的%SelectMode决定返回值的格式。Json_object以显示或ODBC模式返回键和值值(如果这是查询的选择模式)。

JSON_OBJECT不支持将星号(*)语法作为指定表中所有字段的方式。

返回的JSON对象列被标记为表达式(默认情况下);可以为JSON_OBJECT指定列别名。

选择模式和排序

当前%SelectMode属性确定返回的JSON对象值的格式。通过更改选择模式,所有日期和%LIST值都会以该选择模式格式的字符串形式包含在JSON对象中。可以通过将格式转换函数(%EXTERNAL%INTERNAL%ODBCIN%ODBCOUT)应用于JSON_OBJECT中的各个字段名来覆盖当前的选择模式。将格式转换函数应用于JSON_OBJECT没有任何效果,因为JSON对象的键:值对是字符串。

默认排序规则确定返回的JSON对象值的排序规则。可以将排序函数应用于JSON_OBJECT,同时转换键和值。通常,不应该对JSON_OBJECT应用排序函数,因为键区分大小写。在JSON对象格式化之后应用排序规则。因此,%SQLUPPER(JSON_OBJECT(‘K1’:F1,‘K2’:F2))将所有JSON对象键和值字符串转换为大写。%SQLUPPER在JSON对象之前插入一个空格,而不是在对象内的值之前。

JSON_OBJECT中,可以将排序函数应用于键:值对的值部分。由于%SQLUPPER会在值之前插入一个空格,因此通常最好指定大小写转换函数,如LCASEUCASE

ABSENT ON NULL

如果指定可选的ACESING ON NULL关键字短语,则JSON对象中不包括NULL(或NULL文字)列值。JSON对象中不包括占位符。这可能会导致JSON对象具有不同数量的键:值对。例如,下面的程序返回JSON对象,其中对于某些记录,第三个键:值对是Age,对于其他记录,第三个键:值对是FavoriteColors

代码语言:javascript
复制
SELECT JSON_OBJECT('id':%ID,'name':Name,'colors':FavoriteColors,'years':Age ABSENT ON NULL) FROM Sample.Person

如果未指定关键字短语,则NULL的默认值为NULL:NULL由单词NULL(未用引号分隔)表示,作为key:value对的值。因此,JSON_OBJECT函数返回的所有JSON对象将具有相同数量的键:值对。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL函数 JSON_OBJECT
  • 大纲
  • 参数
  • 描述
  • 选择模式和排序
  • ABSENT ON NULL
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档