Trino中ARRAY<ROW(...)>转JSON的合规替代方法(JSON类型及json_format已弃用)
替代Trino中弃用的JSON类型与json_format函数的合规方案
你当前使用的SQL语句如下:
select json_format(cast(COALESCE(array_of_row, array[]) as JSON)) from my_table
该语句虽能运行,但Trino官方文档指出JSON数据类型和json_format函数均已弃用,文档说明如下:
以下函数和运算符不符合SQL标准,应视为已弃用。根据SQL标准,不应存在JSON数据类型,JSON值应表示为字符串值。以下函数的剩余功能已被前文所述的函数覆盖。
合规替代方案
使用Trino提供的标准函数to_json()即可实现完全相同的功能,替代后的SQL语句为:
select to_json(COALESCE(array_of_row, array[])) from my_table
说明
to_json()函数直接将输入的SQL数据类型(如数组、行对象等)序列化为JSON格式的字符串,无需先转换为已弃用的JSON类型,完全符合SQL标准要求。- 原语句中
COALESCE(array_of_row, array[])的逻辑保持不变,确保当array_of_row为null时用空数组兜底,to_json会将空数组正确序列化为[],与原语句输出结果一致。
内容的提问来源于stack exchange,提问作者zyxue
相关产品推荐
相关产品推荐

