Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
LOWER_ATTRIBUTE_NAMES 函式
使用與 LOWER 函數 相同的大小寫轉換常式,將 SUPER 值中所有適用的屬性名稱轉換為小寫。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 ------------- NULLSELECT 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 物件。
對擁有重複屬性名稱的 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.