

 Amazon Redshift は、パッチ 198 以降、新しい 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/)を参照してください。

# LOWER\_ATTRIBUTE\_NAMES 関数
<a name="r_lower_attribute_names"></a>

[LOWER 関数](r_LOWER.md) と同じ大文字/小文字の変換ルーチンを使用して、SUPER 値のすべての該当する属性名を小文字に変換します。LOWER\_ATTRIBUTE\_NAMES は、UTF-8 マルチバイト文字をサポートします (1 文字につき最大 4 バイトまで)。

 SUPER 属性名を大文字に変換するには、[UPPER\_ATTRIBUTE\_NAMES 関数](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\_expression*  
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\_ATTRIBUTE\_NAMES を使用してデータの属性名を小文字に変換します。次の例を考えます。

```
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\_ATTRIBUTE\_NAMES の代替ソリューションとして使用できます。`enable_case_sensitive_super_attribute` の詳細については、「[enable\_case\_sensitive\_super\_attribute](r_enable_case_sensitive_super_attribute.md)」を参照してください。

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

**SUPER 属性名を小文字に変換する**  
次の例では、LOWER\_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 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\_ATTRIBUTE\_NAMES がどのように機能するかを確認します。
+  NULL 値とスカラー SUPER 値 (`"A"` など) は変更されません。
+  SUPER オブジェクトでは、すべての属性名は小文字に変更されますが、`"B"` などの属性値は変更されません。
+  LOWER\_ATTRIBUTE\_NAMES は、SUPER 配列内または別のオブジェクト内にネストされているすべての SUPER オブジェクトに再帰的に適用されます。

**重複する属性名を持つ SUPER オブジェクトでの LOWER\_ATTRIBUTE\_NAMES の使用**  
SUPER オブジェクトに大文字と小文字だけが異なる名前の属性が含まれている場合、LOWER\_ATTRIBUTE\_NAMES はエラーを発生させます。次の例を考えます。

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

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