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 ------------- NULLSELECT 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.