

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# UPPER\_ATTRIBUTE\_NAMES 函数
<a name="r_upper_attribute_names"></a>

使用与 [UPPER 函数](r_UPPER.md)相同的大小写转换例程，将 SUPER 值中的所有适用属性名称转换为大写。UPPER\_ATTRIBUTE\_NAMES 支持 UTF-8 多字节字符，每个字符最多可以有 4 个字节。

 要将 SUPER 属性名称转换为小写，请使用 [LOWER\_ATTRIBUTE\_NAMES 函数](r_lower_attribute_names.md)。

## 语法
<a name="r_upper_attribute_names-synopsis"></a>

```
UPPER_ATTRIBUTE_NAMES( super_expression )
```

## 参数
<a name="r_upper_attribute_names-arguments"></a>

*super\_expression*  
SUPER 表达式。

## 返回类型
<a name="r_upper_attribute_names-return-type"></a>

`SUPER`

## 示例
<a name="r_upper_attribute_names_examples"></a>

**将 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.
```