식에서의 데이터 형식 변환
다음과 같은 두 가지 유형의 데이터 변환이 있습니다.
- 암시적 변환은 식 계산기가 자동으로 데이터를 한 데이터 형식에서 다른 데이터 형식으로 변환하는 것입니다. 예를 들어 smallint를 int와 비교하는 경우 smallint는 비교되기 전에 암시적으로 int로 변환됩니다.
- 명시적 변환은 형변환을 사용하여 로컬 변수, 열 또는 다른 식과 같은 값을 한 데이터 형식에서 다른 데이터 형식으로 변환하는 것입니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.
다음 다이어그램에서는 BINARY 연산의 암시적 변환의 결과 유형을 보여 줍니다. 이 테이블에서 열과 행의 교집합은 왼쪽(원본) 및 오른쪽(대상) 유형의 피연산자가 있는 이진 연산의 결과 유형입니다.
부호 있는 정수와 부호 없는 정수의 교집합은 두 인수 중 하나보다 클 수도 있는 부호 있는 정수입니다.
부호 없는 8바이트 정수와 부호 있는 정수를 결합하는 연산에서 결과 형식을 명확히 하려면 명시적 형변환이 필요합니다.
인수가 하나인 함수는 다음과 같은 경우를 제외하고 해당 인수의 데이터 형식으로 결과를 반환합니다.
- DAY, MONTH 및 YEAR는 날짜를 받아서 정수(DT_I4) 결과를 반환합니다.
- ISNULL은 모든 SSIS 데이터 형식의 식을 받아서 부울(DT_BOOL) 결과를 반환합니다.
- SQUARE 및 SQRT는 숫자 식을 받아서 비정수 숫자(DT_R8) 결과를 반환합니다.
인수의 데이터 형식이 같으면 결과도 해당 형식이 됩니다. 단, DT_DECIMAL 데이터 형식의 두 값에 대한 이진 연산의 반환 결과는 DT_NUMERIC 데이터 형식입니다.
함수는 또한 문자열, 날짜 및 부울을 비교합니다. 함수가 두 값을 비교하기 전에 식 계산기는 다음과 같은 암시적 변환을 수행합니다.
- DT_STR 데이터 형식의 문자열은 DT_WSTR 데이터 형식으로 변환됩니다.
- 날짜 및 시간 값은 DT_DBTIMESTAMP 데이터 형식으로 변환됩니다.
식 계산기는 암시적으로 임의의 값을 부울로 변환할 수 없습니다. 대신 명시적 형변환 연산을 식에 포함해야 합니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.
[!참고] 부울 값은 숫자가 아니라 논리 값입니다. 일부 환경에서는 부울 값이 숫자로 표시될 수 있지만 숫자로 저장되지는 않으며, 다양한 프로그래밍 언어에서는 부울 값을 .NET Framework 메서드와는 다른 숫자 값으로 표시합니다. 예를 들어 Visual Basic에서 사용할 수 있는 변환 함수는 True를 -1로 변환하지만 .NET Framework의 System.Convert.ToInt32 메서드는 True를 +1로 변환합니다. Integration Services 식 언어는 True를 -1로 변환합니다. 오류나 예기치 않은 결과를 방지하려면 True 및 False에 특정 숫자 값을 사용하는 코드를 작성하지 말아야 합니다. 가능하면 부울 변수는 부울 변수용으로 설계된 논리 값으로만 사용해야 합니다.
호환되지 않는 데이터 형식의 인수와 피연산자가 식에 사용될 수 있으며 이 경우 식 계산기는 암시적 데이터 변환을 수행할 수 없습니다. 예를 들어 식 계산기는 문자열 데이터 형식 피연산자와 숫자 데이터 형식 피연산자의 비교를 허용하지 않습니다. 이 비교를 수행하려면 숫자 피연산자를 명시적으로 문자열 데이터 형식으로 형변환해야 합니다. 식 언어에는 문자열, 숫자, 날짜 및 이진 데이터 형식 간의 형변환을 지원하는 형변환 연산자가 있습니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.
변경 내역
릴리스 | 내역 |
---|---|
2006년 7월 17일 |
|