

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# LOWER\$1ATTRIBUTE\$1NAMES 函式
<a name="r_lower_attribute_names"></a>

使用與 [LOWER 函數](r_LOWER.md) 相同的大小寫轉換常式，將 SUPER 值中所有適用的屬性名稱轉換為小寫。LOWER\$1ATTRIBUTE\$1NAMES 支援 UTF-8 多位元組字元，每個字元最多 4 個位元組。

 若要將 SUPER 屬性名稱轉換為大寫，請使用 [UPPER\$1ATTRIBUTE\$1NAMES 函式](r_upper_attribute_names.md)。

## 語法
<a name="r_lower_attribute_names-synopsis"></a>

```
LOWER_ATTRIBUTE_NAMES( super_expression )
```

## 引數
<a name="r_lower_attribute_names-arguments"></a>

*super\$1expression*  
SUPER 表達式。

## 傳回類型
<a name="r_lower_attribute_names-return-type"></a>

`SUPER`

## 使用須知
<a name="r_lower_attribute_names-usage-notes"></a>

在 Amazon Redshift 中，欄識別碼傳統上不區分大小寫，並且會轉換為小寫。如果您從 JSON 等區分大小寫的資料格式擷取資料，則資料可能包含混合大小寫的屬性名稱。

請考量下列範例。

```
CREATE TABLE t1 (s) AS SELECT JSON_PARSE('{"AttributeName": "Value"}');


SELECT s.AttributeName FROM t1;  

attributename
-------------
NULL


SELECT s."AttributeName" FROM t1;

attributename
-------------
NULL
```

Amazon Redshift 會針對這兩個查詢傳回 NULL。若要查詢 `AttributeName`，請使用 LOWER\$1ATTRIBUTE\$1NAMES 將資料的屬性名稱轉換為小寫。請考量下列範例。

```
CREATE TABLE t2 (s) AS SELECT LOWER_ATTRIBUTE_NAMES(s) FROM t1;


SELECT s.attributename FROM t2;

attributename
-------------
"Value"


SELECT s.AttributeName FROM t2; 

attributename
-------------
"Value"


SELECT s."attributename" FROM t2;

attributename
-------------
"Value"


SELECT s."AttributeName" FROM t2;

attributename
-------------
"Value"
```

使用混合大小寫物件屬性名稱的相關選項為 `enable_case_sensitive_super_attribute` 組態選項，其可讓 Amazon Redshift 辨識 SUPER 屬性名稱中的大小寫。這可作為使用 LOWER\$1ATTRIBUTE\$1NAMES 的替代解決方案。如需 `enable_case_sensitive_super_attribute` 的詳細資訊，請前往 [enable\$1case\$1sensitive\$1super\$1attribute](r_enable_case_sensitive_super_attribute.md)。

## 範例
<a name="r_lower_attribute_names_examples"></a>

**將 SUPER 屬性名稱轉換為小寫**  
下列範例使用 LOWER\$1ATTRIBUTE\$1NAMES 來轉換資料表中所有 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 lowercase.
UPDATE t SET s = LOWER_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"]}]
```

請注意 LOWER\$1ATTRIBUTE\$1NAMES 的運作方式。
+  NULL 值和純量 SUPER 值 (例如 `"A"`) 會保持不變。
+  在 SUPER 物件中，所有屬性名稱都會變更為小寫，但屬性值 (例如 `"B"`) 則保持不變。
+  LOWER\$1ATTRIBUTE\$1NAMES 會反覆套用至 SUPER 陣列內或其他物件內的任何巢狀 SUPER 物件。

**對擁有重複屬性名稱的 SUPER 物件使用 LOWER\$1ATTRIBUTE\$1NAMES**  
如果 SUPER 物件包含的屬性名稱只有大小寫不同，LOWER\$1ATTRIBUTE\$1NAMES 將會引發錯誤。請考量下列範例。

```
SELECT LOWER_ATTRIBUTE_NAMES(JSON_PARSE('{"A": "A", "a": "a"}'));      

error:   Invalid input
code:    8001
context: SUPER value has duplicate attributes after case conversion.
```