UPPER_ATTRIBUTE_NAMES 函数 - Amazon Redshift

UPPER_ATTRIBUTE_NAMES 函数

使用与 UPPER 函数相同的大小写转换例程,将 SUPER 值中的所有适用属性名称转换为大写。UPPER_ATTRIBUTE_NAMES 支持 UTF-8 多字节字符,每个字符最多可以有 4 个字节。

要将 SUPER 属性名称转换为小写,请使用 LOWER_ATTRIBUTE_NAMES 函数

语法

UPPER_ATTRIBUTE_NAMES(super_expression)

参数

super_expression

SUPER 表达式。

返回类型

SUPER

示例

将 SUPER 属性名称转换为大写

以下示例使用 UPPER_ATTRIBUTE_NAMES 来转换表中所有 SUPER 值的属性名称。

-- Create a table and insert several SUPER values. CREATE TABLE t (i INT, s SUPER); INSERT INTO t VALUES (1, NULL), (2, 'a'::SUPER), (3, JSON_PARSE('{"AttributeName": "b"}')), (4, JSON_PARSE( '[{"Subobject": {"c": "c"}, "Subarray": [{"d": "d"}, "e"] }]')); -- Convert all attribute names to uppercase. UPDATE t SET s = UPPER_ATTRIBUTE_NAMES(s); SELECT i, s FROM t ORDER BY i; i | s ---+-------------------------------------------------- 1 | NULL 2 | "a" 3 | {"ATTRIBUTENAME":"B"} 4 | [{"SUBOBJECT":{"C":"c"},"SUBARRAY":[{"D":"d"}, "e"]}]

观察 UPPER_ATTRIBUTE_NAMES 的工作原理。

  • NULL 值和标量 SUPER 值(例如 "a")保持不变。

  • 在 SUPER 对象中,所有属性名称都更改为大写,但诸如 "b" 之类的属性值保持不变。

  • UPPER_ATTRIBUTE_NAMES 以递归方式应用于嵌套在 SUPER 数组或其它对象内的任何 SUPER 对象。

在具有重复属性名称的 SUPER 对象上使用 UPPER_ATTRIBUTE_NAMES

如果 SUPER 对象包含的属性的名称仅在大小写上有所不同,则 UPPER_ATTRIBUTE_NAMES 将引发错误。考虑以下示例。

SELECT UPPER_ATTRIBUTE_NAMES(JSON_PARSE('{"A": "A", "a": "a"}')); error: Invalid input code: 8001 context: SUPER value has duplicate attributes after case conversion.