LOWER_ ATTRIBUTE _ NAMES 功能 - Amazon Redshift

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

LOWER_ ATTRIBUTE _ NAMES 功能

將SUPER值中所有適用的屬性名稱轉換為小寫,並使用與LOWER函數. LOWER_ ATTRIBUTE _ NAMES 支持 UTF -8 個多字節字符,每個字符最多 4 個字節。

若要將SUPER屬性名稱轉換為大寫,請使用UPPER_ ATTRIBUTE _ NAMES 功能

語法

LOWER_ATTRIBUTE_NAMES(super_expression)

引數

super_expression

SUPER 表達式。

傳回類型

SUPER

使用須知

在 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

範例

將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對象內的任何對象。

NAMES在具有重複屬性名稱的SUPER物件上使用 LOWER ATTRIBUTE _ _

如果一個SUPER對象包含的屬性,其名稱僅在其大小寫不同,LOWERATTRIBUTE_ _ 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.