Funktion LOWER_ATTRIBUTE_NAMES - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Funktion LOWER_ATTRIBUTE_NAMES

Konvertiert alle zutreffenden Attributnamen in einem SUPER-Wert in Kleinbuchstaben und verwendet dabei dieselbe Konvertierungsroutine wie Die Funktion LOWER. LOWER_ATTRIBUTE_NAMES unterstützt UTF-8-Multibyte-Zeichen bis zu einer maximalen Länge von vier Bytes pro Zeichen.

Verwenden Sie Funktion UPPER_ATTRIBUTE_NAMES, um SUPER-Attributnamen in Großbuchstaben zu konvertieren.

Syntax

LOWER_ATTRIBUTE_NAMES(super_expression)

Argumente

super_expression

Ein SUPER-Ausdruck.

Rückgabetyp

SUPER

Nutzungshinweise

In Amazon Redshift wird bei Spaltenbezeichnern traditionell nicht zwischen Groß- und Kleinschreibung unterschieden und sie werden in Kleinbuchstaben umgewandelt. Wenn Sie Daten aus Datenformaten wie JSON aufnehmen, bei denen die Groß- und Kleinschreibung beachtet wird, können die Daten Attributnamen mit gemischter Groß- und Kleinschreibung enthalten.

Betrachten Sie das folgende Beispiel.

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 gibt für beide Abfragen NULL zurück. Verwenden Sie für Abfragen von AttributeName LOWER_ATTRIBUTE_NAMES, um die Attributnamen der Daten in Kleinbuchstaben umzuwandeln. Betrachten Sie das folgende Beispiel.

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"

Eine verwandte Option für die Arbeit mit Objektattributnamen mit gemischter Groß- und Kleinschreibung ist die enable_case_sensitive_super_attribute-Konfigurationsoption, mit der Amazon Redshift Groß- und Kleinschreibung in SUPER-Attributnamen erkennt. Dies kann eine alternative Lösung zur Verwendung von LOWER_ATTRIBUTE_NAMES sein. Weitere Informationen zu enable_case_sensitive_super_attribute finden Sie unter enable_case_sensitive_super_attribute.

Beispiele

Konvertieren von SUPER-Attributnamen in Kleinbuchstaben

Im folgenden Beispiel wird LOWER_ATTRIBUTE_NAMES verwendet, um die Attributnamen aller SUPER-Werte in einer Tabelle zu konvertieren.

-- 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"]}]

Beobachten Sie, wie LOWER_ATTRIBUTE_NAMES funktioniert.

  • NULL-Werte und skalare SUPER-Werte wie "A" sind unverändert.

  • In einem SUPER-Objekt werden alle Attributnamen zu Kleinbuchstaben geändert, Attributwerte wie z. B. "B" bleiben jedoch unverändert.

  • LOWER_ATTRIBUTE_NAMES gilt rekursiv für jedes SUPER-Objekt, das in einem SUPER-Array oder in einem anderen Objekt verschachtelt ist.

Verwendung von LOWER_ATTRIBUTE_NAMES für ein SUPER-Objekt mit doppelten Attributnamen

Wenn ein SUPER-Objekt Attribute enthält, deren Namen sich nur in ihrer Groß- und Kleinschreibung unterscheiden, gibt LOWER_ATTRIBUTE_NAMES einen Fehler aus. Betrachten Sie das folgende Beispiel.

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