LOWER_ ATTRIBUTE _ NAMES fonction - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

LOWER_ ATTRIBUTE _ NAMES fonction

Convertit tous les noms d'attributs applicables d'une SUPER valeur en minuscules, en utilisant la même routine de conversion majuscules/minuscules que le. LOWERfonction LOWER_ ATTRIBUTE _ NAMES prend en charge UTF -8 caractères multioctets, jusqu'à un maximum de quatre octets par caractère.

Pour convertir les noms SUPER d'attributs en majuscules, utilisez leUPPER_ ATTRIBUTE _ NAMES fonction.

Syntaxe

LOWER_ATTRIBUTE_NAMES(super_expression)

Arguments

super_expression

Une expression SUPER.

Type de retour

SUPER

Notes d’utilisation

Dans Amazon Redshift, les identifiants de colonne ne font généralement pas la distinction entre majuscules et minuscules et sont convertis en minuscules. Si vous ingérez des données provenant de formats de données distinguant majuscules et minuscules, par exempleJSON, les données peuvent contenir des noms d'attributs composés de majuscules et minuscules.

Prenez l’exemple de code suivant.

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 revient NULL pour les deux requêtes. Pour effectuer une requêteAttributeName, utilisez LOWER ATTRIBUTE _ _ NAMES pour convertir les noms des attributs des données en minuscules. Prenez l’exemple de code suivant.

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"

L'option de enable_case_sensitive_super_attribute configuration est une option connexe pour travailler avec des noms d'attributs d'objets en majuscules et minuscules. Elle permet à Amazon Redshift de reconnaître les noms d'attributs majuscules et minusculesSUPER. Cela peut être une solution alternative à l'utilisation de LOWER _ ATTRIBUTE _NAMES. Pour plus d'informations surenable_case_sensitive_super_attribute, rendez-vous surenable_case_sensitive_super_attribute.

Exemples

Conversion des noms SUPER d'attributs en minuscules

L'exemple suivant utilise LOWER _ ATTRIBUTE _ NAMES pour convertir les noms d'attributs de toutes les SUPER valeurs d'une table.

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

Observez le fonctionnement de LOWER ATTRIBUTE _ _NAMES.

  • NULLles valeurs et les SUPER valeurs scalaires telles que celles qui "A" sont inchangées.

  • Dans un SUPER objet, tous les noms d'attributs sont remplacés par des minuscules, mais leurs valeurs "B" restent inchangées.

  • LOWER_ ATTRIBUTE _ NAMES s'applique de manière récursive à tout SUPER objet imbriqué dans un SUPER tableau ou dans un autre objet.

Utilisation de LOWER _ ATTRIBUTE _ NAMES sur un SUPER objet dont les noms d'attributs sont dupliqués

Si un SUPER objet contient des attributs dont les noms ne diffèrent que dans leur cas, LOWER ATTRIBUTE _ _ NAMES génère une erreur. Prenez l’exemple de code suivant.

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