형식 호환성 및 변환 - AWS Clean Rooms

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

형식 호환성 및 변환

다음 설명에서는 AWS Clean Rooms에서 유형 변환 규칙 및 데이터 유형 호환성이 작동하는 방식에 대해 설명합니다.

호환성

데이터 형식 일치, 즉 리터럴 값 및 상수를 데이터 형식과 일치시키는 것은 아래 작업을 포함해 다양한 데이터베이스 작업에서 발생합니다.

  • 테이블에 대한 데이터 조작 언어(DML) 작업

  • UNION, INTERSECT 및 EXCEPT 쿼리

  • CASE 표현식

  • LIKE, IN 등 조건자 평가

  • 데이터를 비교하거나 추출하는 SQL 함수에 대한 평가

  • 수학 연산자를 사용한 비교

위의 작업 결과는 형식 변환 규칙과 데이터 형식 호환성에 따라 달라집니다. 호환성은 특정 값과 특정 데이터 유형의 one-to-one 일치가 항상 필요한 것은 아니라는 것을 의미합니다. 일부 데이터 형식은 호환이 가능하기 때문에 묵시적 변환, 즉 강제 변환이 가능합니다. 자세한 정보는 묵시적인 변환 형식을 참조하세요. 데이터 형식이 호환되지 않을 때는 명시적인 변환 함수를 사용하여 다른 데이터 형식으로 값을 변환할 수 있는 경우도 있습니다.

일번적인 호환성 및 변환 규칙

호환성 및 변환 규칙은 다음과 같습니다.

  • 일반적으로 동일한 형식 카테고리에 해당하는 데이터 형식(여러 가지 숫자 데이터 형식 등)은 서로 호환이 가능하기 때문에 묵시적으로 변환할 수 있습니다.

    예를 들어 묵시적인 변환을 통해 소수 값을 정수 열에 삽입할 수 있습니다. 이때 소수는 정수로 반올림됩니다. 또는 날짜에서 2008 같은 숫자 값을 추출하여 정수 열에 삽입하는 것도 가능합니다.

  • 숫자 데이터 형식은 값을 삽입하려고 할 때 발생하는 오버플로 조건을 적용합니다. out-of-range 예를 들어 정밀도가 5인 소수 값은 정밀도가 4로 정의된 DECIMAL 열에 맞지 않습니다. 정수 또는 십진수 전체 부분이 잘리지 않습니다. 그러나 십진수의 소수 부분은 필요에 따라 위 또는 아래로 반올림할 수 있습니다. 하지만 테이블에서 선택한 값의 명시적인 변환 결과는 반올림되지 않습니다.

  • 서로 다른 유형의 문자열이 호환됩니다. 예를 들어 단일 바이트 데이터가 포함된 VARCHAR 열과 CHAR 열 문자열은 서로 호환이 되어 묵시적으로 변환할 수 있습니다. 멀티바이트 데이터가 포함되는 VARCHAR 문자열은 호환되지 않습니다. 그 밖에 문자열이 적합한 리터럴 값인 경우에는 문자열을 날짜, 시간, 타임스탬프 또는 숫자 값으로 변환할 수도 있습니다. 선행 또는 후행 공백은 무시됩니다. 반대로 날짜, 시간, 타임스탬프 및 숫자 값을 고정 길이 또는 가변 길이 문자열로 변환하는 것도 가능합니다.

    참고

    문자열을 숫자 형식으로 변환하려면 문자열에 숫자를 표현한 문자가 있어야 합니다. 예를 들어 '1.0'이나 '5.9' 같은 문자열은 소수 값으로 변환할 수 있지만 문자열 'ABC'는 어떤 숫자 형식으로도 변환할 수 없습니다.

  • 십진수 값을 문자열과 비교하는 경우 는 문자열을 십진수 값으로 AWS Clean Rooms 변환하려고 시도합니다. 모든 다른 숫자 값을 문자열과 비교하는 경우 숫자 값이 문자열로 변환됩니다. 반대 변환(예: 문자열을 정수로 변환하거나 DECIMAL 값을 문자열로 변환)을 적용하려면 CAST 함수과 같은 명시적 함수를 사용하세요.

  • 64비트 DECIMAL 또는 NUMERIC 값의 정밀도를 높여서 변환하려면 CAST 또는 CONVERT 같은 명시적인 변환 함수를 사용해야 합니다.

  • DATE 또는 TIMESTAMP를 TIMESTAMPTZ로 변환하거나 TIME을 TIMETZ로 변환할 때 시간대는 현재 세션 시간대로 설정됩니다. 세션 시간대는 기본적으로 UTC입니다.

  • 마찬가지로 TIMESTAMPTZ 역시 현재 세션 시간대에 따라 DATE, TIME 또는 TIMESTAMP로 변환됩니다. 세션 시간대는 기본적으로 UTC입니다. 변환 후에는 시간대 정보가 삭제됩니다.

  • 시간대를 지정하여 타임스탬프를 표현한 문자열은 현재 세션 시간대(기본적으로 UTC)에 따라 TIMESTAMPTZ로 변환됩니다. 마찬가지로 시간대가 지정된 시간을 표현하는 문자열은 현재 세션 시간대(기본값 UTC)를 사용하여 TIMETZ로 변환됩니다.

묵시적인 변환 형식

묵시적인 변환 유형은 다음과 같이 두 가지입니다.

  • 인수의 묵시적 변환(INSERT 또는 UPDATE 명령의 값 설정 등)

  • 표현식의 묵시적 변환(WHERE 절의 비교 등)

다음 표는 인수 또는 표현식에서 묵시적으로 변환할 수 있는 데이터 형식을 나열한 것입니다. 그 밖에 명시적인 변환 함수를 통한 변환도 가능합니다.

입력 형식 출력 형식
BIGINT BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
INTEGER
REAL (FLOAT4)
SMALLINT
VARCHAR
CHAR VARCHAR
날짜 CHAR
VARCHAR
TIMESTAMP
TIMESTAMPTZ
DECIMAL (NUMERIC) BIGINT
CHAR
DOUBLE PRECISION (FLOAT8)
INTEGER INT)
REAL (FLOAT4)
SMALLINT
VARCHAR
DOUBLE PRECISION (FLOAT8) BIGINT
CHAR
DECIMAL (NUMERIC)
INTEGER (INT)
REAL (FLOAT4)
SMALLINT
VARCHAR
INTEGER (INT) BIGINT
BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
REAL (FLOAT4)
SMALLINT
VARCHAR
REAL (FLOAT4) BIGINT
CHAR
DECIMAL (NUMERIC)
INTEGER (INT)
SMALLINT
VARCHAR
SMALLINT BIGINT
BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
INTEGER (INT)
REAL (FLOAT4)
VARCHAR
TIMESTAMP CHAR
날짜
VARCHAR
TIMESTAMPTZ
TIME
TIMESTAMPTZ CHAR
날짜
VARCHAR
TIMESTAMP
TIMETZ
TIME VARCHAR
TIMETZ
TIMETZ VARCHAR
TIME
참고

TIMESTAMPTZ, TIMESTAMP, DATE, TIME, TIMETZ 또는 문자열 사이의 묵시적인 변환은 현재 세션 시간대를 사용합니다.

VARBYTE 데이터 유형은 암시적으로 다른 데이터 유형으로 변환될 수 없습니다. 자세한 내용은 CAST 함수을(를) 참조하세요.