LOWER_ATTRIBUTE_NAMES 함수 - Amazon Redshift

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

대소문자가 혼합된 객체 속성 이름을 사용하기 위한 관련 옵션은 Amazon Redshift가 SUPER 속성 이름의 대소문자를 인식할 수 있도록 하는 enable_case_sensitive_super_attribute 구성 옵션입니다. 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.